1

我已经在在线免费课程中学习 Python。现在我已经锻炼了我已经尝试了几个小时的运动,但是..我不明白为什么它不起作用..

指令在这里:编写一个调用函数fizz_count,将列表x作为输入并返回该列表中字符串“fizz”的计数。

例如,fizz_count(["fizz","buzz","fizz"])应该返回2. (确保您的函数return是数字而不是printing。)如果您需要帮助,请查看提示!

提示:尝试在你的函数中创建一个counter变量(例如, )。count计数器变量最初可以设置为零。之后,您可以遍历作为输入的列表,并在每次列表中的项目等于字符串“fizz”时将计数增加一。

最后,不要忘记sreturn的数量"fizz"

然后这是我的代码:

x=["fizz","bear","fizz"]

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

print fizz_count(x) #It prints "fizz","bear","fizz" but the thing that I want is to                 
                    #print "2" because "fizz" is two times in that string..
4

3 回答 3

2

要解决您的特定问题:

x=["fizz","bear","fizz"]

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

print fizz_count(x)

几个问题:

  1. *xpython中的参数中不需要
  2. 迭代元素时使用不同的变量名。
  3. count=0就足够了,无需将其转换为字符串
  4. if x=='fizz' 应该是if e=='fizz'- 检查列表的元素,而不是整个列表。
  5. return 语句必须循环执行之后。注意缩进。

当然,有更好的方法来实现你正在寻找的东西,但我会把它留在这里,因为你似乎正在学习。

希望这可以帮助。

于 2013-10-18T15:31:38.930 回答
1

关于您的脚本的几件事:

def fizz_count(*x)

这可能不是您想要的语法。您在这里所做的是扩展列表,因此它需要自己的参数槽。你可能想像这样传递它:

def fizz_count(x)

下一个:

count = str(0)

您可以像这样简单地启动您的计数器:

count = 0

下一个:

for count in x:

这现在使您的count变量成为 中的条目x,但是由于您扩展了列表,这可能不是您所看到的。无论如何,再次,您想要这样的东西将每个成员分配给一个变量:

for item in x:

下一个:

count=count+str(1)

同样,您不需要将其转换为字符串,count=count+1就足够了

最后,不确定这是否只是格式问题,但您的 return 语句应该在您的 for 循环之外。

于 2013-10-18T15:37:02.217 回答
0

首先,你不应该x=["fizz","bear","fizz"]在函数之前拥有它,你应该在它之后拥有它,因为将它与 print 函数一起使用更有意义。我已经测试过了,这应该可以工作:

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

x=["fizz","bear","fizz"]
print (fizz_count(x))

我不明白为什么你有count一个字符串。你不需要。只需将其设为普通整数,并i在我声明此 for 循环时自动创建变量。此外,尽管它仍然有效,但您不应该这样count=count+1做,但这并不是真正的 Pythonic 方式,并且+=内置运算符是有原因的(它做同样的事情,但让您的生活更轻松)

于 2013-10-18T15:48:07.483 回答