[英]How do I compare a character to all the characters in some string in 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”在字符串中仅出现一次。 为什么会这样,我该如何解决?
"YourString".count("Char")
将
要解决您眼前的问题,您只需要使打印凹痕并返回
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)
这是一个简单的代码,可以满足您的需求:
它返回字符ch在文本中出现的次数。
def test(ch, text): // ch is character and text is the string
numAppears = 0
for t in text:
if t == ch:
numAppears += 1
return numAppears
例:
>>> test("a", "saherbaderahwal")
4
>>> test("c", "hello")
0
>>> test(" ", "nice to meet you")
3
>>>
几种可能的方式。
使用清单
>>> len([x for x in test_string if x == test_char])
使用collections.Counter
>>> from collections import Counter
>>> print(Counter(test_string)[test_char])
问题在于return
值缩进了一个区块,因此比较该列表的第一个字符后,该函数返回。
(另一个问题是,函数func1
不仅命名不正确,而且过于复杂:
def cmp_chars(x, y):
return x == y
虽然您实际上根本不需要任何功能。)
假设您放置在其中的代码格式正确,则不会使您的return
代码缩进一格-好像它在for块中被调用了一次
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.