Я нахожусь в классе программирования начального уровня, используя 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 в цикле, вызывает ошибку. Мне просто нужна помощь, чтобы понять логику ошибки, а не решение ошибки.
Решение
С индексами
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)
for value in my_list: print(value)
будет гораздо более полезным и лаконичным, а также гораздо менее подверженным ошибкам. И если вы собираетесь сгенерировать индекс, тогда цикл for
обычно все равно лучше, с enumerate()
или range()
.
0
,1
,2
и3
вы уже получили доступ ко всем 4 элементам списка. Нет индекса4
. Индексирование с нуля означает, что последний индекс всегда имеет длину минус 1.