到目前为止,这是我的功能:
def fizzbuzz(intList):
strList = list[]
for i in range(0,len(intList)):
if intList[i] % 3== 0 and intList[i] % 5==0:
strList[i] = "FizzBuzz"
elif intList[i] % 3 == 0:
strList[i] = "Fizz"
elif intList[i] % 5 == 0:
strList[i] = "Buzz"
else:
strList[i] = str(intList[i])
return strList
这是我基本上应该做的事情:
对于三倍数的数字,用字符串“Fizz”替换整数。
对于五倍数的数字,请用字符串“Buzz”替换整数。
对于三和五的倍数的数字,替换整数
使用字符串"FizzBuzz"
您的函数应该将整数列表作为输入。 您的函数不应修改输入列表。 您的函数应返回包含整数和字符串的更新列表。
答案 0 :(得分:0)
您正在使用strList = list()
创建(很可能是)空列表,然后在不存在的索引处访问strList[i]
- { {1}}为空,对其进行任何索引操作将引发strList
。
您应该复制原始列表,而不是IndexError
(或[:]
,或list(intList)
,如果在Python 3.5上):
[*intList]
现在,当您索引strList = intList[:]
时,您将使用与您正在迭代的strList
中的当前数字对应的索引。
答案 1 :(得分:0)
您根据strList
的长度为intList
编制索引。这只有在strList和intList的长度相同时才有效。
要创建列表,您还必须使用正确的语法list()
而不是list[]
此外,您已将strList
创建为空字符串,这意味着您不必使用strList[i]
为每个索引分配值(看似不可能)。
此问题的解决方案是使用.append(value)
。我已经创建了一个解决方案,如下所示:
def fizzbuzz(intList):
strList = list()
for i in range(0,len(intList)):
if intList[i] % 3== 0 and intList[i] % 5==0:
strList.append("FizzBuzz")
elif intList[i] % 3 == 0:
strList.append("Fizz")
elif intList[i] % 5 == 0:
strList.append("Buzz")
else:
strList.append(str(intList[i]))
return strList
这里函数将创建strList,遍历给定intList中的每个值。根据值,函数会将所需的值附加到列表中。最后,返回一个基于单词和数字的新列表。