簡體   English   中英

枚舉 Function Output:

[英]Enumerate Function Output:

請讓我知道這里的錯誤是什么:

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))

Output:

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

你從索引 10 開始

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

因此,您在第 7 次迭代中訪問超出范圍的數組numbers[16]

您的數組有 16 個元素,並且由於數組索引是基於 0 的,因此最后一個元素將是 numbers[15] 而不是 numbers[16],並且您的程序正在嘗試執行 numbers[16],因此它會出現索引超出范圍錯誤。

檢查您的 function,如下所示:

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))

實現如下output:

[(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)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM