"FizzBuzz" 函数与预期输出不匹配

"FizzBuzz" function doesn't match expected output

在 Python 课程中,我被告知要创建一个 FizzBu​​zz 函数,该函数接收课程在线评分员提供的整数列表:

def fizzbuzz(intlist):

其他参数是:我不能修改输入列表,必须return一个既有整数又有字符串的列表,不需要调用函数。以下是我到目前为止的想法:

def fizzbuzz(intlist):
    result = [ ]
    i = 0
    for i in range(1, 101):
        if i %3 == 0 and i %5 == 0:
            result.append(str('FizzBuzz'))
        elif i %3 == 0:
            result.append(str('Fizz'))
        elif i %5 == 0:
            result.append(str('Buzz'))
        else:
            result.append(i)
        i += 1
    return result

在线评分员说我的输出与数字 1-30 和 1-100 的测试用例不匹配。

谁能给我指出正确的方向?


编辑 2015 年 7 月 29 日 3:00pm 太平洋标准时间

这是我的新代码,反映了您最近的建议:

def fizzbuzz(intlist):
    result = [ ]
    for i in intlist:
        if i %3 == 0 and i %5 == 0:
            result.append('FizzBuzz')
        elif i %3 == 0:
            result.append('Fizz')
        elif i %5 == 0:
            result.append('Buzz')
        else:
            result.append(i)
        return result

当我在自动评分器中输入上面的代码时,它说我还没有定义

intlist

我该如何定义

intlist

在第 3 行中,当数字列表应该由自动评分器提供时?

评分者会 运行

fizzbuzz(intlist)

验证我的函数 return 的输出是否正确。我相信我错误地假设参数

intlist

传递给 fizzbuzz 函数的应该是我在第 3 行接收和评估的整数列表的名称。

还有什么建议吗?

看看这一行:

 for i in range(1, 101):

您正在对 1 到 101 之间的数字进行 fizzbuzz 练习,而不管传递给您的函数的是什么。您应该改为查看 i in intlist

此外,for 循环负责确保每次循环时 i 都有不同的值;您不必在循环中自己递增它或在循环之前对其进行初始化。

如果我没理解错的话,你必须循环遍历intlist的内容。您也不必初始化或递增 i,因为这已由 for 循环处理。通过将 '' 放在单词 FizzBu​​zz、Fizz 和 Buzz 周围,您已经将它们变成了字符串,因此您不必显式调用 str()。如果你想使用这个函数,你首先必须定义一个列表,然后在它上面调用你的函数。我怀疑正确的代码是:

def fizzbuzz(intlist):
    result = [ ]
    for i in intlist:
        if i %3 == 0 and i %5 == 0:
            result.append('FizzBuzz')
        elif i %3 == 0:
            result.append('Fizz')
        elif i %5 == 0:
            result.append('Buzz')
        else:
            result.append(i)
        return result

alist = [1,2,3]
fizzbuzz(alist)

这应该有效。

def fizzbuzz(intList):
result = [ ]
for i in intList:
    if i %3 == 0 and i %5 == 0:
        result.append('FizzBuzz')
    elif i %3 == 0:
        result.append('Fizz')
    elif i %5 == 0:
        result.append('Buzz')
    else:
        result.append(i)
return result

我也是菜鸟,和你卡在同一个地方,终于破解了,成功了:

def fizzbuzz(intList):
intlist1=list()
intlist1=intList
for i in range(len(intlist1)):
    if (intlist1[i]%3==0) and (intlist1[i]%5==0):
        intlist1[i]='FizzBuzz'
    elif (intlist1[i]%5==0):
        intlist1[i]='Buzz'
    elif (intlist1[i]%3==0):
        intlist1[i]='Fizz'
        i=i+1
return intlist1

def fizzbuzz(x): 小号=“” 列表=[] 对于我在 x 中: 如果我%3==0: s="fizz" 如果我%5==0: s=s+"Buzz" 如果 s==“”: 小号=我 slist.append(s) 小号=“” 打印列表