При добавлении списков в цикл while в Python появляется сообщение об ошибке «Индекс списка вне диапазона» - PullRequest
1 голос
/ 13 октября 2019

Итак, я пытаюсь сделать простой цикл и по какой-то причине не могу понять, почему появляется сообщение об ошибке.

earnings = [94500,65377,84524]
deductions = [20000,18000,19000]

tax = [] #empty list
i = -1    #iterative counter
while True:
    i=i+1
    if (earnings[i] > 23000):
        tax.append(0.14*earnings[i])
        continue
    else:
        break
print ('Tax calculation has been completed')
print ('Number of iterations: ',i)

У меня такое ощущение, что это как-то связано слиния if (earnings[i] > 23000) но я не знаю, как бы я манипулировал этим.

Ответы [ 2 ]

1 голос
/ 13 октября 2019

Вы можете использовать enumerate для перебора списка earnings при создании счетчика итераций, начиная с 1:

tax = []
for i, earning in enumerate(earnings, 1):
    if earning <= 23000:
        break
    tax.append(0.14 * earning)

print('Tax calculation has been completed')
print('Number of iterations: ', i)
1 голос
/ 13 октября 2019

У вас нет проверки в цикле, которая проверяет, вышел ли индекс за пределы диапазона, то есть проверка i по количеству элементов в списке «заработок». Попробуйте так:

earnings = [94500,65377,84524]
deductions = [20000,18000,19000]

tax = [] #empty list
i = -1    #iterative counter
while True:
    i=i+1
    if i >= len(earnings):
        break
    if (earnings[i] > 23000):
        tax.append(0.14*earnings[i])
        continue
print ('Tax calculation has been completed')
print ('Number of iterations: ',i)
...