IndexError Exception - PullRequest
       3

IndexError Exception

0 голосов
/ 30 сентября 2018

Я нахожусь в классе программирования начального уровня, использующем Python, и я изо всех сил пытался понять концепцию в нашем учебнике.

# This code will cause an IndexError exception.
my_list = [10, 20, 30, 40]
index = 0
while index < 5:
    print(my_list[index])
    index += 1

Это возвращает IndexError, как и предполагалось, но я не понимаю точную причину, почему, но я понимаю, что индекс, установленный на <5 в цикле, вызывает ошибку.Мне просто нужна помощь, чтобы понять логику ошибки, а не ее решение. </p>

1 Ответ

0 голосов
/ 30 сентября 2018

Решение

С индексами 0, 1, 2 и 3 вы уже получили доступ ко всем 4 элементам списка.Нет индекса 4.Индексирование на основе нуля означает, что последний индекс всегда имеет длину минус 1.

С учетом этого проблема состоит в том, что вы ожидаете, что в списке будет пять значений, а их всего четыре.Измените свой код на следующий ...

my_list = [10, 20, 30, 40]
index = 0
while index < 4:
    print(my_list[index])
    index += 1

Однако это будет «жесткое кодирование» цикла, и если вы измените длину my_list, вам придется изменить условия цикла,Поэтому я предлагаю вам изменить условия для проверки длины my_list.Что-то вроде этого будет работать ...

my_list = [10, 20, 30, 40]
index = 0
while index < len(my_list):
    print(my_list[index])
    index += 1

Другие решения

Существуют и другие более эффективные способы распечатки содержимого списка.

Цикл по содержимому списка

for value in my_list: 
    print(value)

Использование выражения со звездочкой (обратите внимание, что содержимое этой строки печатается в одной строке)

print(*my_list)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...