2016-09-13 51 views
0

我试图做一个函数,当你输入一个表,例如'鱼,胡萝卜,牛肉,鱼'它检测到多少次'鱼'输入,在这种情况下2.但是,当我尝试做这返回'None'而不是2.检测给定变量中有多少个字符串?

def word_count(x): 
    count = 0 
    for item in x: 
     if item == 'Fish': 
      count = count + 1 
      return count 
word_count(['Fish', 'Carrot', 'Beef', 'Fish']) 

任何帮助将不胜感激,因为我对Python很陌生,谢谢。

+0

你遍历字符字符串中的现在。用'word_count(['Fish','Carrot','Beef','Fish'])'调用它,并且最后只返回count(在for循环之外) – L3viathan

+1

collections.Counter完成这项工作。 .. –

回答

1

这几乎是正确的,除了:

x,按照你的逻辑应该是一个字符串列表,所以你应该在[]调用函数时括起来。然后你可以遍历它。

当你有你的答案时,你应该从函数返回,即迭代列表。

所以修正版本会是什么样子

def word_count(x): 
    count = 0 
    for item in x: 
     if item == 'Fish': 
      count = count + 1 
    return count 
word_count(['Fish', 'Carrot', 'Beef', 'Fish']) 
+1

我已经更新了这个问题。如果是''[]'的情况,函数应该抛出错误,而是返回'None'。这意味着OP在这个问题上进入了错误的例子。实际上他是这么称呼的 –

+1

@MoinuddinQuadri同意它应该给出一个'TypeError',但它可能不是明智的更改代码。尝试评论 – Li357

+0

我其实不明白。你完全正确,但如果他这样称呼它,用一个列表,它会返回1 - 在它遇到第一个“鱼”之后。 –

1

问题与您的代码:您的功能return ing的值在if语句。因此,当x列表中没有Fish时,它将返回None,这是Python中的函数返回的默认值)。试试下面的代码,它会工作:

def word_count(x): 
    count = 0 
    for item in x: 
     if item == 'Fish': 
      count = count + 1 
    return count 

建议:您可以简化您使用与当前列表中count()功能发挥作用。例如:

>>> my_list = ['Fish', 'Carrot', 'Beef', 'Fish'] 
>>> my_list.count('Fish') 
2 
相关问题