在Python中计算列表中的特定字符串

在Python中计算列表中的特定字符串,python,Python,我想数一数列表中的“fizz”,我写了下面的代码,但它不起作用。告诉我原因并提供解决方案。我在做教程,我必须按照他们的指示编写代码,但我不能按照他们说的去做,或者可能我误解了他们 count = 0 def fizz_count(x): for string in x: if string == 'fizz': count = count + 1 else: count = count return

我想数一数列表中的“fizz”,我写了下面的代码,但它不起作用。告诉我原因并提供解决方案。我在做教程,我必须按照他们的指示编写代码,但我不能按照他们说的去做,或者可能我误解了他们

count = 0
def fizz_count(x):
    for string in x:
        if string == 'fizz':
            count = count + 1
        else:
            count = count
    return count

如果你想检查你的答案是否正确,那么你必须通过解释来检查。请注意,我没有调用自己的函数。相反,它们是Codecademy教程中的内置功能,它通过调用带有一些参数的函数来检查函数。

编辑:由于投票失败,有更多解释

考虑到使用全局变量count global的方法,因为它不在函数中,所以需要进行两次自适应:

您需要使用关键字global使count在本地可用 由于使用全局变量,因此不需要返回它,因为它仍然可用 代码:

现在不建议特别为此类任务实际使用全局变量,因为它需要更多的时间来加载,您必须处理当前状态之类的内容,因此您更希望引入一个局部变量,并像以前那样通过return语句传递它

将计数=0放入函数 代码

现在,函数中的新计数将初始化为零

现在这里还有两件事:

else语句 增量呢 由于else语句在循环之外,因此只有在循环期间if条件从未为True时才会执行它。这有一些用例。但你通常会把它放在循环中。然而,在您的情况下,它基本上不会改变任何东西,这就是为什么它可以被完全删除

第二点是,增量可以写成count+=1,这被认为是更可读的,因为它不那么笨拙,第二个计数合并到+=

因此,最终函数可以这样编写

def fizz_count(x):
    count = 0 

    for string in x:
        if string == 'fizz':
            count += 1

    return count
还要检查其他答案的合理解决方案

您需要在for循环中包含count变量,并且不需要else条件

def fizz_count(x):
    count=0
    for string in x:
        if string == 'fizz':
            count = count + 1
    return count
您还可以将函数编写为

def fizz_count(x):
    return x.count('fizz')

看看下面的代码。我做了一些更正。有一些语法错误和缩进错误,我修正了。看看它:

def fizz_count(x):
    count = 0
    for string in x:
        if string == 'fizz':
            count = count + 1
        else:
            count = count
    return count


str1 = fizz_count(['fizzers','fizzerlss','fizz','fizz'])
print str1

你说它不工作到底是什么意思?lst.count'fizz'有什么问题?@TimPietzcker我的意思是它没有打印字符串'fizz'在列表中的次数。在格式化代码时,我注意到你使用了制表符进行缩进。不要这样做。每个缩进级别使用四个空格。当我这么做的时候,我甚至可能已经纠正了你的错误——在PythonWell中,混合制表符和空格是个麻烦,它在打印什么?还请提供一个示例列表,我们可以在其中测试您的程序。这不是global的工作;count=0应位于函数内部。另外,else子句是无用的。else子句也处于错误的缩进级别,尽管它碰巧无关紧要。是的,但也许OP想要一个全局计数2。无用,但它不会使代码失败,并且知道它可以在那里编写有些帮助有时@TimPietzcker@user2357112它会打印2,因为fizz出现了两次。您的代码返回以下错误:-File python,第2行count=0^IndentationError:应为缩进块或您可以这样做:lst=['fizz','fizz','fizzler']打印lst.count'fizz'最后一个str1只是用于存储计数的变量。我通过传递列表调用函数fizz_count,该函数返回的值存储在名为str1的变量中。然后它就被打印出来了。看这个链接。。。可能是口是心非。和
def fizz_count(x):
    return x.count('fizz')
def fizz_count(x):
    count = 0
    for string in x:
        if string == 'fizz':
            count = count + 1
        else:
            count = count
    return count


str1 = fizz_count(['fizzers','fizzerlss','fizz','fizz'])
print str1