枚举函数输出:



请告诉我这里的错误是什么:

numbers = [3,11,17,25,28,30,35,32,46,65,97,72,45,22,14,150]
def fizz_buzz(numbers):
for i,num in enumerate(numbers,start=10):
if num%3==0:
numbers[i] = 'fizz'
if num%5==0:
numbers[i]= 'buzz'
if num%3==0 and num%5==0:
numbers[i]= 'fizzbuzz'
else:
continue
return numbers
print(fizz_buzz(numbers))

输出:

numbers[i]= 'buzz'
IndexError: list assignment index out of range

您从索引10 开始

for i,num in enumerate(numbers,start=10):

因此,您在第7次迭代中访问数组numbers[16],这超出了范围。

您的数组有16个元素,由于数组索引是基于0的,最后一个元素将是数字[15],而不是数字[16],并且您的程序正试图执行数字[16]因此索引超出范围错误。

检查您的功能,如下所示:

numbers = [3,11,17,25,28,30,35,32,46,65,97,72,45,22,14,150]
def fizz_buzz(numbers):
for i,num in enumerate(numbers,start=10):
if i < len(numbers):
if num%3==0:
numbers[i] = 'fizz'
if num%5==0:
numbers[i]= 'buzz'
if num%3==0 and num%5==0:
numbers[i]= 'fizzbuzz'
else:
continue
return numbers
print(fizz_buzz(numbers))

实现以下输出:

[(10,3),(11,11),(12,17),(13,25),(14,28), and so on].

它可以是以下内容:

numbers = [3,11,17,25,28,30,35,32,46,65,97,72,45,22,14,150]
def fizz_buzz(numbers):
result = []
for i,num in enumerate(numbers):
if num%3==0 and num%5==0:
result.append((i+10, 'fizzbuzz'))
elif num%3==0:
result.append((i+10, 'fizz'))
elif num%5==0:
result.append((i+10, 'buzz'))
else:
result.append((i+10, num))
return result
print(fizz_buzz(numbers))
# [(10, 'fizz'), (11, 11), (12, 17), (13, 'buzz'), (14, 28), (15, 'fizzbuzz'), (16, 'buzz'), (17, 32), (18, 46), (19, 'buzz'), (20, 97), (21, 'fizz'), (22, 'fizzbuzz'), (23, 22), (24, 14), (25, 'fizzbuzz')]

如果你想得到没有气泡/嗡嗡声的答案,请执行以下操作:

numbers = [3,11,17,25,28,30,35,32,46,65,97,72,45,22,14,150]
numbers = [(i+10, num) for i, num in enumerate(numbers)]
print(numbers)
# [(10, 3), (11, 11), (12, 17), (13, 25), (14, 28), (15, 30), (16, 35), (17, 32), (18, 46), (19, 65), (20, 97), (21, 72), (22, 45), (23, 22), (24, 14), (25, 150)]

最新更新