Главная страница

Книга Изучаем Python


Скачать 4.68 Mb.
НазваниеКнига Изучаем Python
Дата10.12.2022
Размер4.68 Mb.
Формат файлаpdf
Имя файлаErik_Metiz_Izuchaem_Python_Programmirovanie_igr_vizualizatsia_da.pdf
ТипКнига
#837531
страница6 из 53
1   2   3   4   5   6   7   8   9   ...   53
45
comment.py
# Say hello to everyone.
print("Hello Python people!")
Python игнорирует первую строку и выполняет вторую.
Hello Python people!
Какие комментарии следует писать?
Комментарии пишутся прежде всего для того, чтобы объяснить, что должен делать ваш код и как он работает. В ходе работы над проектом вы понимаете, как работают все его компоненты. Но, если вернуться к проекту спустя некоторое время, скорее всего, некоторые подробности будут забыты. Конечно, всегда можно изучить код и разобраться в том, как должны работать его части, но хорошие комментарии с до- ступным изложением общих принципов работы кода сэкономят немало времени.
Если вы хотите стать профессиональным программистом или участвовать в со- вместной работе с другими программистами, научитесь писать осмысленные комментарии. В наши дни почти все программы разрабатываются коллективно в группах — либо группами работников одной компании, либо группами энтузиа- стов, совместно работающих над проектом с открытым кодом. Опытные програм- мисты ожидают увидеть комментарии в коде, поэтому лучше привыкайте добавлять содержательные комментарии прямо сейчас. Написание простых, лаконичных комментариев – одна из самых полезных привычек, необходимых начинающему программисту.
Принимая решение о том, нужно ли писать комментарий или нет, спросите себя, пришлось ли вам перебрать несколько вариантов в поисках разумного решения для некоторой задачи; если ответ будет положительным, напишите комментарий по по- воду вашего решения. Удалить лишние комментарии позднее намного проще, чем возвращаться и добавлять комментарии в программу. С этого момента я буду ис- пользовать комментарии в примерах для пояснения смысла некоторых частей кода.
УПРАЖНЕНИЯ
2-10 . Добавление комментариев: выберите две программы из написанных вами и добавьте в каждую хотя бы один комментарий . Если вы не найдете, что написать в комментариях, потому что программы были слишком просты, добавьте свое имя и текущую дату в начало кода . Затем добавьте одно предложение с описанием того, что делает программа .
Философия Python
Долгое время язык программирования Perl был краеугольным камнем интернет- программирования. На первых порах функционирование многих интерактивных сайтов было основано на сценариях Perl. В то время сообщество Perl руководство- валось девизом: «Это можно сделать несколькими способами». Какое-то время разработчикам нравился такой подход, потому что гибкость, присущая языку, позволяла решать многие задачи разными способами. Подобный подход был до-

46 Глава 2 • Переменные и простые типы данных пустим при работе над собственными проектами, но со временем стало ясно, что чрезмерная гибкость усложняет долгосрочное сопровождение крупных проектов.
Было слишком трудно, утомительно и долго разбираться в коде и пытаться понять, что же думал другой разработчик при решении сложной задачи.
Опытные программисты Python рекомендуют избегать лишних сложностей и при- менять простые решения там, где это возможно. Философия сообщества Python выражена в очерке Тима Питерса «The Zen of Python». Чтобы просмотреть этот краткий набор принципов написания хорошего кода Python, достаточно ввести команду import this в интерпретаторе. Я не стану воспроизводить все принципы, но приведу несколько строк, чтобы вы поняли, почему они важны для вас как для начинающего программиста Python.
>>> import this
The Zen of Python, by Tim Peters
‰
Красивое лучше, чем уродливое.
Программисты Python считают, что код может быть красивым и элегантным.
В программировании люди занимаются решением задач. Программисты всегда ценили хорошо спроектированные, эффективные и даже красивые решения.
Со временем вы больше узнаете о Python, начнете писать больше кода, и когда- нибудь ваш коллега посмотрит на экран вашего компьютера и скажет: «Ого, какой красивый код!»
‰
Простое лучше, чем сложное.
Если у вас есть выбор между простым и сложным решением и оба работают, ис- пользуйте простое решение. Ваш код будет проще в сопровождении, а у вас и дру- гих разработчиков будет меньше проблем с обновлением этого кода в будущем.
‰
Сложное лучше, чем запутанное.
Реальность создает свои сложности; иногда простое решение задачи невозможно.
В таком случае используйте самое простое решение, которое работает.
‰
Удобочитаемость имеет значение.
Даже если ваш код сложен, он должен нормально читаться. Работая над проектом, требующим написания сложного кода, постарайтесь написать содержательные комментарии для этого кода.
‰
Должен существовать один — и желательно только один — очевидный способ сделать это.
Если предложить двум программистам Python решить одну и ту же задачу, они должны выработать похожие решения. Это не значит, что в программировании нет места для творчества. Наоборот! Но бульшая часть работы программиста за- ключается в применении небольших, стандартных решений для простых ситуаций в контексте большого, более творческого проекта. Внутренняя организация ваших программ должна выглядеть логично с точки зрения других программистов Python.
‰
Сейчас лучше, чем никогда.
Вы можете потратить весь остаток жизни на изучение всех тонкостей Python и программирования в целом, но тогда вы никогда не закончите ни один проект.

Итоги 47
Не пытайтесь написать идеальный код; напишите код, который работает, а потом решите, стоит ли доработать его для текущего проекта или же перейти на что-то другое.
Когда вы перейдете к следующей главе и займетесь изучением более сложных тем, постарайтесь не забывать об этой философии простоты и ясности. Опытные программисты будут с большим уважением относиться к вашему коду, охотнее делиться своим мнением и сотрудничать с вами в интересных проектах.
УПРАЖНЕНИЯ
2-11 . Дзен Python: введите команду import this в терминальном сеансе Python и просмотри- те другие принципы .
Итоги
В этой главе вы научились работать с переменными. Вы узнали, как использовать содержательные имена переменных и как исправлять ошибки в именах и синтак- сические ошибки в случае их возникновения. Вы узнали, что такое строки и как выводить их в нижнем/верхнем регистре и с капитализацией всех слов. Мы рас- смотрели способы аккуратного оформления вывода с применением пропусков, а также удаления лишних пропусков из разных частей строки. Вы начали работать с целыми и вещественными числами и узнали о некоторых неожиданностях, встре- чающихся при работе с числовыми данными. Вы научились писать содержательные комментарии, которые упрощают написание кода для вас и его чтение для других разработчиков. В завершение главы была представлена философия максимальной простоты кода.
В главе 3 рассматривается хранение наборов данных в переменных, называемых
списками. Вы узнаете, как перебрать содержимое списка и обработать хранящуюся в нем информацию.

3
Списки
В этой и следующей главах вы узнаете, что собой представляют списки и как начать работать с элементами списка. Списки позволяют хранить в одном месте взаимосвязанные данные, сколько бы их ни было — несколько элементов или несколько миллионов элементов. Работа со списками относится к числу самых выдающихся возможностей Python, доступных для начинающего программиста.
Операции со списками связывают воедино многие важные концепции в про- граммировании.
Что такое список?
Список — это набор элементов, следующих в определенном порядке. Вы можете создать список для хранения букв алфавита, цифр от 0 до 9 или имен всех членов вашей семьи. В список можно поместить любую информацию, причем данные в списке даже не обязаны быть как-то связаны друг с другом. Так как список обыч- но содержит более одного элемента, рекомендуется присваивать спискам имена во множественном числе: letters
, digits
, names и т. д.
В языке Python список обозначается квадратными скобками (
[]
), а отдельные элементы списка разделяются запятыми. Простой пример списка с названиями моделей велосипедов:
bicycles.py
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
Если вы прикажете Python вывести список, то на экране появится перечисление элементов списка в квадратных скобках:
['trek', 'cannondale', 'redline', 'specialized']
Конечно, вашим пользователям такое представление не подойдет; разберемся, как обратиться к отдельным элементам в списке.
Обращение к элементам списка
Списки представляют собой упорядоченные наборы данных, поэтому для обраще- ния к любому элементу списка следует сообщить Python позицию (индекс) нужного

Индексы начинаются с 0, а не с 1 49
элемента. Чтобы обратиться к элементу в списке, укажите имя списка, за которым следует индекс элемента в квадратных скобках.
Например, название первого велосипеда в списке bicycles выводится следующим образом:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
 print(bicycles[0])
Синтаксис обращения к элементу показан в точке . Когда мы запрашиваем один элемент из списка, Python возвращает только этот элемент без квадратных скобок или кавычек:
trek
Именно такой результат должны увидеть пользователи — чистый, аккуратно от- форматированный вывод.
Также можно использовать строковые методы из главы 2 с любым элементом списка. Например, элемент 'trek'
можно более аккуратно отформатировать при помощи метода title()
:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0].title())
Этот пример выдает такой же результат, как и предыдущий, только название 'Trek'
выводится с прописной буквы.
Индексы начинаются с 0, а не с 1
Python считает, что первый элемент списка находится в позиции 0, а не в позиции 1.
Этот принцип встречается в большинстве языков программирования и объясняется особенностями низкоуровневой реализации операций со списками. Если вы полу- чаете неожиданные результаты, определите, не допустили ли вы простую ошибку
«смещения на 1».
Второму элементу списка соответствует индекс 1. В этой простой схеме индекс любого элемента вычисляется уменьшением на 1 его позиции в списке. Напри- мер, чтобы обратиться к четвертому элементу списка, следует запросить элемент с индексом 3.
В следующем примере выводятся названия велосипедов с индексами 1 и 3:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[1])
print(bicycles[3])
При этом выводится второй и четвертый элементы списка:
cannondale specialized
В Python также существует специальный синтаксис для обращения к последнему элементу списка. Если запросить элемент с индексом –1, Python всегда возвращает последний элемент в списке:

50 Глава 3 • Списки bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[-1])
Фрагмент вернет значение 'specialized'
. Этот синтаксис весьма полезен, потому что при работе со списками часто требуется обратиться к последним элементам, не зная точное количество элементов в списке. Синтаксис также распространяется на другие отрицательные значения индексов. Индекс –2 возвращает второй эле- мент от конца списка, индекс –3 — третий элемент от конца и т. д.
Использование отдельных элементов из списка
Отдельные значения из списка используются так же, как и любые другие пере- менные. Например, вы можете воспользоваться конкатенацией для построения сообщения, содержащего значение из списка.
Попробуем извлечь название первого велосипеда из списка и составить сообщение, включающее это значение.
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
 message = "My first bicycle was a " + bicycles[0].title() + "."
print(message)
В точке  программа строит сообщение, содержащее значение из bicycles[0]
, и сохраняет его в переменной message
. Так создается простое предложение с упо- минанием первого велосипеда из списка:
My first bicycle was a Trek.
УПРАЖНЕНИЯ
Попробуйте написать несколько коротких программ, чтобы получить предварительное представление о списках Python . Возможно, для упражнений из каждой главы стоит создать отдельную папку, чтобы избежать путаницы .
3-1 . Имена: сохраните имена нескольких своих друзей в списке с именем names . Выведите имя каждого друга, обратившись к каждому элементу списка (по одному за раз) .
3-2 . Сообщения: начните со списка, использованного в упражнении 3-1, но вместо вывода имени каждого человека выведите сообщение . Основной текст всех сообщений должен быть одинаковым, но каждое сообщение должно включать имя адресата .
3-3 . Собственный список: выберите свой любимый вид транспорта (например, мотоциклы или машины) и создайте список с примерами . Используйте свой список для вывода утверж- дений об элементах типа: «Я хотел бы купить мотоцикл Honda» .
Изменение, добавление и удаление элементов
Обычно вы будете создавать динамические списки; это означает, что во время вы- полнения программы в созданном вами списке будут добавляться и удаляться элементы. Например, вы можете создать игру, в которой игрок должен стрелять по кораблям космических захватчиков. Исходный набор кораблей сохраняется в списке; каждый раз, когда вы сбиваете корабль, он удаляется из списка. Каждый

Индексы начинаются с 0, а не с 1 51
раз, когда на экране появляется новый враг, он включается в список. Длина списка кораблей будет уменьшаться и увеличиваться по ходу игры.
Изменение элементов в списке
Синтаксис изменения элемента напоминает синтаксис обращения к элементу списка. Чтобы изменить элемент, укажите имя списка и индекс изменяемого эле- мента в квадратных скобках; далее задайте новое значение, которое должно быть присвоено элементу.
Допустим, имеется список мотоциклов, и первым элементом списка хранится строка 'honda'
. Как изменить значение первого элемента?
motorcycles.py

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
 motorcycles[0] = 'ducati'
print(motorcycles)
В точке  определяется исходный список, в котором первый элемент содержит строку 'honda'
. В точке  значение первого элемента заменяется строкой 'ducati'
Из вывода видно, что первый элемент действительно изменился, а остальные эле- менты списка сохранили прежние значения:
['honda', 'yamaha', 'suzuki']
['ducati', 'yamaha', 'suzuki']
Изменить можно значение любого элемента в списке, не только первого.
Добавление элементов в список
Новые элементы могут добавляться в списки по разным причинам — например, для появления на экране новых космических кораблей, включения новых данных в визуализацию или добавления новых зарегистрированных пользователей на по- строенный вами сайт. Python предоставляет несколько способов добавления новых данных в существующие списки.
Присоединение элементов в конец списка
Простейший способ добавления новых элементов в список — присоединение эле- мента в конец списка. Используя список из предыдущего примера, добавим новый элемент 'ducati'
:
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
 motorcycles.append('ducati')
print(motorcycles)

52 Глава 3 • Списки
Метод append()
в точке  присоединяет строку 'ducati'
в конец списка, другие элементы в списке при этом остаются неизменными:
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha', 'suzuki', 'ducati']
Метод append()
упрощает динамическое построение списков. Например, вы може- те начать с пустого списка и добавлять в него элементы серией команд append()
В следующем примере в пустой список добавляются элементы 'honda'
,
'yamaha'
и 'suzuki'
:
motorcycles = [] motorcycles.append('honda') motorcycles.append('yamaha') motorcycles.append('suzuki') print(motorcycles)
Полученный список выглядит точно так же, как и списки из предыдущих примеров:
['honda', 'yamaha', 'suzuki']
Такой способ построения списков встречается очень часто, потому что данные, которые пользователь захочет сохранить в программе, нередко становятся из- вестными только после запуска программы. Чтобы пользователь мог управлять содержимым списка, начните с определения пустого списка, а затем присоединяйте к нему каждое новое значение.
Вставка элементов в список
Метод insert()
позволяет добавить новый элемент в произвольную позицию спи- ска. Для этого следует указать индекс и значение нового элемента.
motorcycles = ['honda', 'yamaha', 'suzuki']
 motorcycles.insert(0, 'ducati')
print(motorcycles)
В этом примере в точке  значение 'ducati'
вставляется в начало списка. Ме- тод insert()
выделяет свободное место в позиции 0 и сохраняет в нем значение 'ducati'
. Все остальные значения списка при этом сдвигаются на одну позицию вправо:
['ducati', 'honda', 'yamaha', 'suzuki']
Удаление элементов из списка
Нередко возникает необходимость в удалении одного или нескольких элементов из списка. Например, когда игрок сбивает корабль пришельца, этот корабль нужно удалить из списка активных врагов. Или когда пользователь решает удалить свою учетную запись в созданном вами веб-приложении, этот пользователь должен быть

Индексы начинаются с 0, а не с 1 53
убран из списка активных пользователей. Элементы удаляются из списка по по- зиции или по значению.
Удаление элемента с использованием команды del
Если вам известна позиция элемента, который должен быть удален из списка, вос- пользуйтесь командой del motorcycles = ['honda', 'yamaha', 'suzuki'] print(motorcycles)
 del motorcycles[0] print(motorcycles)
В точке  вызов del удаляет первый элемент,
'honda'
, из списка motorcycles
:
['honda', 'yamaha', 'suzuki']
['yamaha', 'suzuki']
Команда del позволяет удалить элемент из любой позиции списка, если вам изве- стен его индекс. Например, вот как из списка удаляется второй элемент 'yamaha'
:
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
del motorcycles[1] print(motorcycles)
Второй элемент исчез из списка:
['honda', 'yamaha', 'suzuki']
['honda', 'suzuki']
В обоих примерах значение, удаленное из списка после использования команды del
, становится недоступным.
Удаление элемента с использованием метода pop()
Иногда значение, удаляемое из списка, должно как-то использоваться. Допустим, вы хотите получить координаты x и y только что сбитого корабля пришельцев, что- бы изобразить взрыв в этой позиции. В веб-приложении пользователь, удаленный из списка активных участников, может быть добавлен в список неактивных и т. д.
Метод pop()
удаляет последний элемент из списка, но позволяет работать с ним после удаления. Удалим мотоцикл из списка:
 motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
 popped_motorcycle = motorcycles.pop()
 print(motorcycles)
 print(popped_motorcycle)
Сначала в точке  определяется и выводится содержимое списка motorcycles
В точке 
значение извлекается из списка и сохраняется в переменной с именем

1   2   3   4   5   6   7   8   9   ...   53


написать администратору сайта