Глава 4 • Работа со списками
print("I can't wait to see your next trick, " + magician.title() + ".\n")
print("Thank you everyone, that was a great magic show!")
Так как строка
имеет отступ, сообщение будет продублировано для каждого
фокусника в списке
:
Alice, that was a great trick!
I can't wait to see your next trick, Alice.
Thank you everyone, that was a great magic show!
David, that was a great trick!
I can't wait to see your next trick, David.
Thank you everyone, that was a great magic show!
Carolina, that was a great trick!
I can't wait to see your next trick, Carolina.
Thank you everyone, that was a great magic show!
Это еще один пример логической ошибки, наподобие описанной в разделе «Про-
пущенные отступы в других строках» на с. 66. Python не знает, что вы пытаетесь
сделать в своем коде, поэтому он просто выполняет весь код, не нарушающий правил
синтаксиса. Если действие, которое должно выполняться один раз, выполняется
многократно, проверьте, нет ли лишнего отступа в соответствующей строке кода.
Пропущенное двоеточие
Двоеточие в конце команды
for
сообщает Python, что следующая строка является
началом цикла.
magicians = ['alice', 'david', 'carolina']
for magician in magicians
print(magician)
Если вы случайно забудете поставить двоеточие, как в примере
, произойдет
синтаксическая ошибка, так как полученная команда нарушает правила языка.
И хотя такие ошибки легко исправляются, найти их бывает достаточно трудно.
Вы не поверите, сколько времени тратят программисты на поиск подобных «одно-
символьных» ошибок. Поиск таких ошибок усложняется еще и тем, что человек
склонен видеть то, что он ожидает увидеть.
УПРАЖНЕНИЯ
4-1 . Пицца: вспомните по крайней мере три ваши любимые разновидности пиццы . Сохрани-
те их в списке и используйте цикл for для вывода всех названий .
• Измените цикл for так, чтобы вместо простого названия пиццы выводилось сообще-
ние, включающее это название . Таким образом, для каждого элемента должна выво-
диться строка с простым текстом вида «I like pepperoni pizza» .
• Добавьте в конец программы (после цикла for) строку с завершающим сообщением .
Таким образом, вывод должен состоять из трех (и более) строк с названиями пиццы
и дополнительного сообщения, скажем, «I really love pizza!» .
Создание числовых списков
69
4-2 . Животные: создайте список из трех (и более) животных, обладающих общей характе-
ристикой . Используйте цикл for для вывода названий всех животных .
• Измените программу так, чтобы вместо простого названия выводилось сообщение,
включающее это название, например «A dog would make a great pet» .
• Добавьте в конец программы строку с описанием общего свойства . Например, можно
вывести сообщение «Any of these animals would make a great pet!» .
Создание числовых списков
Необходимость хранения наборов чисел возникает в программах по многим при-
чинам. Например, в компьютерной игре могут храниться координаты каждого
персонажа на экране, таблицы рекордов и т. д. В программах визуализации данных
пользователь почти всегда работает с наборами чисел: температурой, расстоянием,
численностью населения, широтой/долготой и другими числовыми данными.
Списки идеально подходят для хранения наборов чисел, а Python предоставляет
специальные средства для эффективной работы с числовыми списками. Достаточно
один раз понять, как эффективно пользоваться этими средствами, и ваш код будет
хорошо работать даже в том случае, если список содержит миллионы элементов.
Функция range()
Функция
range()
упрощает построение числовых последовательностей. Например,
с ее помощью можно легко вывести серию чисел:
numbers.py
for value in range(1,5):
print(value)
И хотя на первый взгляд может показаться, что он должен вывести числа от 1 до 5,
на самом деле число 5 не выводится:
1
2
3
4
В этом примере
range()
выводит только числа от 1 до 4. Перед вами еще одно про-
явление «смещения на 1», часто встречающегося в языках программирования. При
выполнении функции
range()
Python начинает отсчет от первого переданного зна-
чения и прекращает его при достижении второго. Так как на втором значении про-
исходит остановка, конец интервала (5 в данном случае) не встречается в выводе.
Чтобы вывести числа от 1 до 5, используйте вызов
range(1,6)
:
for value in range(1,6):
print(value)
На этот раз вывод начинается с 1 и завершается 5:
|