我需要编写一个函数,它将一个字符和一个字符串作为输入,然后将该字符与字符串中的每个元素进行比较。然后打印并最终返回字符出现在字符串中的次数。
这是我提出的代码,但它没有以正确的方式运行。如果有人能解释并纠正错误,我会很感激。
我首先考虑编写一个比较两个字符的函数来检查它们是否相等,如下所示:
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”。为什么这样,我该如何解决?
答案 0 :(得分:6)
"YourString".count("Char")
会做
答案 1 :(得分: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)
答案 2 :(得分:1)
这是一个执行您想要的简单代码:
它返回字符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
>>>
答案 3 :(得分:1)
几种可能的方式。
使用列表
>>> len([x for x in test_string if x == test_char])
使用collections.Counter
>>> from collections import Counter
>>> print(Counter(test_string)[test_char])
答案 4 :(得分:0)
问题是return
缩进了一个块到深,所以在比较列表的第一个字符后,函数返回。
(另一个问题是你的函数func1
不仅命名不佳,而且太复杂了:
def cmp_chars(x, y):
return x == y
虽然你真的根本不需要这个功能。)
答案 5 :(得分:0)
假设你放在那里的代码是正确格式化的,而不是你的return
一个块 - 它看起来像是在for block中被调用了一次