" FizzBu​​zz"功能与预期输出不匹配

时间:2015-07-28 19:42:10

标签: python function fizzbuzz

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

def fizzbuzz(intlist):

其他参数是:我无法修改输入列表,必须返回包含整数和字符串的列表,并且不需要调用该函数。这是我到目前为止所提出的:

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的测试用例不匹配。

有人能指出我正确的方向吗?

编辑7/29/15太平洋标准时间下午3点

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

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)

验证我的函数返回正确的输出。我相信我错误地认为参数

intlist
传递给fizzbuzz函数的

应该是我在第3行接受和评估的整数列表的名称。

还有其他建议吗?

5 个答案:

答案 0 :(得分:3)

如果我理解正确,你必须遍历intlist的内容。您也不必初始化或增加i,因为这已由for循环处理。通过在FizzBu​​zz,Fizz和Buzz之类的词语中加入'你已经将它们变成字符串,所以你不必显式调用str()。如果要使用此功能,首先必须定义一个列表,然后在其上调用您的函数。我怀疑正确的代码是:

ifelse

答案 1 :(得分:1)

看看这一行:

 for i in range(1, 101):

您正在对1到101之间的数字执行fizzbuzz练习,无论传递给您的函数是什么。您应该改为i in intlist

此外,for循环负责确保每次循环时i具有不同的值;你不必在循环中自己增加它或在循环之前初始化它。

答案 2 :(得分:0)

这应该有效。

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

答案 3 :(得分:0)

即使我是一个新手并且被困在同一个地方,最后我破解了它,这有效:

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

答案 4 :(得分:0)

def fizzbuzz(x):     S = “”     SLIST = []     for x in x:         如果我%3 == 0:             S = “嘶嘶声”         如果我%5 == 0:             S = S + “嗡嗡”         如果s ==“”:             S =我         slist.append(S)         S = “”     打印slist