2

我正在尝试使用 codeacademy 来学习 python。任务是“编写一个名为 fizz_count 的函数,该函数将列表 x 作为输入并返回该列表中字符串“fizz”的计数。”

# Write your function below!
 def fizz_count(input):
     x = [input]
     count = 0
     if x =="fizz":
         count = count + 1
         return count

我认为 if 循环上方的代码很好,因为错误消息(“您的函数在 fizz_count([u'fizz', 0, 0]) 上失败;它应该返回 1 时返回 None。”)仅在我添加时出现那个代码。

我还尝试创建一个新变量(new_count)并将其设置为 count + 1 但这给了我相同的错误消息

非常感谢您的帮助

4

5 回答 5

3

问题是你没有循环。

# Write your function below!
 def fizz_count(input):
     count = 0
     for x in input: # you need to iterate through the input list
         if x =="fizz":
             count = count + 1
     return count

使用该函数还有一种更简洁的方法.count()

def fizz_count(input):
    return input.count("fizz")
于 2013-07-16T01:33:17.907 回答
1

摆脱x = [input],这只是创建另一个包含该列表的列表input

我认为if循环上面的代码很好

ifs 不要循环;您可能正在寻找for

for x in input:  # 'x' will get assigned to each element of 'input'
    ...

在这个循环中,您将检查是否x等于"fizz"并相应地增加计数(就像您if当前使用 -statement 所做的那样)。

最后,将您的return-statement 移出循环/if-statement。您希望在循环之后执行它,因为您总是希望在返回之前完全遍历列表。

作为旁注,您不应该使用 name input,因为它已经分配给built-in function

把它们放在一起:

def fizz_count(l):

    count = 0  # set our initial count to 0

    for x in l:  # for each element x of the list l
        if x == "fizz":  # check if x equals "fizz"
            count = count + 1  # if so, increment count

    return count  # return how many "fizz"s we counted
于 2013-07-16T01:30:50.777 回答
0
def fizz_count(x):                       #DEFine func
    count = 0                            #set counter to zero
    for item in x:                       
        if item == "fizz" :               
            count += 1                   #iterate counter +1 for each match
    print count                          #print result
    return count                         #return value 
fizz_count(["fizz","buzz","fizz"])       #call func 
于 2014-02-12T00:45:38.460 回答
0

试试这个:

# Write your function below!
def fizz_count(x):
    count = 0
    for item in x:
        if item == "fizz": 
            count = count + 1
    return count
于 2014-03-03T14:23:42.280 回答
-2
def fizz_count(input)
    count = 0
    for x in input:
        count +=  1 if x=="fizz" else 0
    return count
于 2013-07-16T01:30:35.583 回答