For Loop to Word Letters in a Word

时间:2017-03-30 14:18:53

标签: python for-loop

我正在学习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)

7 个答案:

答案 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)