我正在学习python,我遇到了一个问题,要求我在我的“计数字母函数”中输入一个字符串作为输入。
该函数应该计算给定单词中有多少"a"s
(具体来说,是用户输入的水果)。
最终值是正确的,但在我的函数中,它会列出程序“过程”,如果您要列出每个索引有多少"a"s
并添加之前的所有内容。
我只想要一个最终值,而不是列表。
如果我不太清楚,这是我的程序并亲自测试一下,看看我的意思,也许可以帮助我找到解决方案?
def count_letters(a):
count=0
for char in a:
if char == 'a':
count+=1
print count
a=raw_input("Name a fruit and I will tell you how many letters are in it." + '\n')
print count_letters(a)
答案 0 :(得分:1)
只需改变:
for char in a:
if char == 'a':
count+=1
print count
要:
for char in a:
if char == 'a':
count+=1
print count
否则,每次for循环运行时,您都将打印计数器。
此外,您正在print count_letters(a)
打印您的功能。
你不需要这个,因为你在代码的最后一行放了一个print语句。如果您在那里留下print
语句来调用您的函数,它将打印None
,因为该函数已经返回了计数值。
所以你也可以改变:
print count_letters(a)
要:
count_letters(a)
print count_letters(a)
的输出示例:
Name a fruit and I will tell you how many letters are in it. abacaxi
3
None
count_letters(a)
的输出示例:
Name a fruit and I will tell you how many letters are in it. abacaxi
3
答案 1 :(得分:1)
如果您想保留类似的结构并自己计算计数,可以使用:
def count_a(fruit_name):
return sum(1 for char in fruit_name if char == 'a')
它更短,它更pythonic,它不是一个标准的方法调用,它返回一个整数而不是只打印它,变量名称可能会更清楚。
如果您不介意使用现有的python方法,可以使用:
return fruit_name.count('a')
答案 2 :(得分:0)
你只需将print函数放入for循环中。 托盘:
def count_letters(a):
count=0
for char in a:
if char == 'a':
count+=1
print count
缩进在python
中很重要答案 3 :(得分:0)
简单的改变使其有效。只需将print
替换为return
,然后删除一个缩进级别即可获得循环次数。
def count_letters(a):
count=0
for char in a:
if char == 'a':
count+=1
return count
一般来说,要避免for
循环,需要考虑更多pythonic。虽然不是最短的解决方案(请参阅Eric Duminil的评论),但这可能会让您知道如何使用列表理解:
def count_a(text):
return len([x for x in text if x=='a'])
print count_a("banana")
答案 4 :(得分:0)
好像你不明白打印和返回之间的区别。你正在做的是在循环中打印每一个事件,当你想要的是最后的最终值时。您需要做的是保持相同的代码,除非循环终止,您想要返回最后的任何值。因此,摆脱打印计数,并删除缩进。然后你必须返回计数。您不希望在循环中返回,因为这将在检查单个字符后返回count的第一个值。 如果您有任何问题,请给我留言。
答案 5 :(得分:0)
试试这个:
使用for循环,基于Sphinx给出的单词
word = input("Waiting for word from Sphinx... ")
word1 = word
for word in word1:
print(word)
答案 6 :(得分:0)
您的代码是正确的,但是这里的print
条件应该处于count_letters
函数的条件下,而不是在for
循环中
def count_letters(a):
count=0
for char in a:
if char == 'a':
count+=1
print count
a=raw_input("Name a fruit and I will tell you how many letters are in it." + '\n')
print count_letters(a)