如何在Python中将字符与字符串中的所有字符进行比较?
我需要写一个函数,这个函数接收一个字符和一个字符串作为输入,然后把这个字符和字符串中的每个元素进行比较。最后,它会打印出这个字符在字符串中出现的次数,并返回这个次数。
这是我写的代码,但它的结果不对。如果有人能帮我解释一下并纠正错误,我会很感激。
我首先想写一个函数,用来比较两个字符是否相等,像这样:
def func1(x1, x2):
if x1 == x2:
return True
else:
return False
然后,我想写另一个主要的函数,像这样:
def func2():
ch1 = input("Enter one character. ")
str1 = str(input("Enter a string. "))
list_1 = list(str1)
a = 0
for 1 in list_1:
if func1(ch1, list_1):
a += 1
else:
a += 0
print(a)
return a
这里有什么错误呢?如果我选择“a”作为我的字符,然后输入一个包含五个“a”的字符串,函数却告诉我“a”在字符串中只出现了一次。这是为什么呢?我该怎么修复这个问题?
6 个回答
1
要解决你现在的问题,你只需要把打印和返回的缩进调整一下。
def func2():
ch1 = input("Enter one character. ")
str1 = str(input("Enter a string. "))
list_1 = list(str1)
a = 0
for 1 in list_1:
if func1(ch1, list_1):
a += 1
else:
a += 0
print(a) # <-- dedent
return a # <-- dedent
你不需要把字符串转换成列表来遍历它。如果else
部分没有任何作用,就不需要它。你也不应该在for循环里面返回值。
def func2():
ch1 = input("Enter one character. ")
str1 = input("Enter a string. ")
a = 0
for c in str1:
if c == ch:
a += 1
print(a)
return a
更简单的方法是
def func2():
ch1 = input("Enter one character. ")
str1 = input("Enter a string. ")
return str1.count(ch1)
3
有几种可能的方法。
使用列表
>>> len([x for x in test_string if x == test_char])
使用 collections.Counter
>>> from collections import Counter
>>> print(Counter(test_string)[test_char])
7
你可以用 "YourString".count("Char")
这个方法来计算字符串中某个字符出现的次数。