在Python课程中,我被告知创建一个FizzBuzz函数,该函数接收课程的在线评分者提供的整数列表:
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行接受和评估的整数列表的名称。
还有其他建议吗?
答案 0 :(得分:3)
如果我理解正确,你必须遍历intlist的内容。您也不必初始化或增加i,因为这已由for循环处理。通过在FizzBuzz,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