М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет45/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   41   42   43   44   45   46   47   48   ...   334
Байланысты:
Изучаем Python

3.9. Количество гостей:
в одной из программ из упражнений с 3.4 по 3.7 используйте 
len()
для вывода сообщения с количеством людей, приглашенных на обед.
3.10. Все функции
: придумайте информацию, которую можно было бы хранить в списке. 
Например, создайте список гор, рек, стран, городов, языков… словом, чего угодно. Напи-
шите программу, которая создает список элементов, а затем вызывает каждую функцию, 
упоминавшуюся в этой главе, хотя бы один раз.
Ошибки индексирования при работе со списками
Когда программист только начинает работать со списками, он часто допускает одну 
характерную ошибку. Допустим, имеется список с тремя элементами и программа 
запрашивает четвертый элемент:
motorcycles.py
motorcycles = ['honda', 'yamaha', 'suzuki'] 
print(motorcycles[3])
В этом случае происходит 
ошибка индексирования
:
Traceback (most recent call last):
File "motorcycles.py", line 3, in
print(motorcycles[3])
IndexError: list index out of range
Python пытается вернуть элемент с индексом 3. Однако при поиске по списку 
ни один элемент 
motorcycles
не обладает индексом 3. Из-за смещения индексов 
на 1 эта ошибка весьма распространена. Люди думают, что третьим элементом 
является элемент с индексом 3, потому что они начинают отсчет с 1. Но для 
Python третьим является элемент с индексом 2, потому что индексирование на-
чинается с 0.
Ошибка индексирования означает, что Python не может понять, какой индекс за-
прашивается в программе. Если в вашей программе происходит ошибка индексиро-
вания, попробуйте уменьшить запрашиваемый индекс на 1. Затем снова запустите 
программу и проверьте правильность результатов.
Помните, что для обращения к последнему элементу в списке используется ин-
декс –1. Этот способ работает всегда, даже если размер списка изменился с момента 
последнего обращения к нему:
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[-1])


Итоги
63
Индекс –1 всегда возвращает последний элемент списка, в данном случае значе-
ние 
'suzuki'
:
'suzuki'
Этот синтаксис порождает ошибку только в одном случае — при попытке получить 
последний элемент пустого списка:
motorcycles = [] 
print(motorcycles[-1])
В списке 
motorcycles
нет ни одного элемента, поэтому Python снова выдает ошибку 
индексирования:
Traceback (most recent call last): 
File "motorcyles.py", line 3, in  
print(motorcycles[-1]) 
IndexError: list index out of range
ПРИМЕЧАНИЕ
Если в вашей программе произошла ошибка индексирования и вы не 
знаете, как с ней справиться, попробуйте вывести список или хотя бы его длину . Воз-
можно, ваш список выглядит совсем не так, как вы думаете, особенно если его содержи-
мое динамически определялось программой . Фактическое состояние списка или точное 
количество элементов в нем поможет вам выявить логические ошибки такого рода .


Достарыңызбен бөлісу:
1   ...   41   42   43   44   45   46   47   48   ...   334




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет