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