Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
«Изучаем Python» — это самое популярное в мире руководство по языку Python. Вы сможете не только максимально быстро его освоить, но и научитесь писать программы, устранять ошибки и создавать работающие приложения. В первой части книги вы познакомитесь с основными концепциями программирования, такими как переменные, списки, классы и циклы, а простые упражнения приучат вас к шаблонам чистого кода. Вы узнаете, как делать программы интерактивными и как протестировать код, прежде чем добавлять в проект. Во второй части вы примените новые знания на практике и создадите три проекта: аркадную игру в стиле Space Invaders, визуализацию данных с удобными библиотеками Python и простое веб-приложение, которое можно быстро развернуть онлайн. Книга была переработана и дополнена, чтобы соответствовать последним практикам программирования на Python: приемы редактирования в VS Code, применение модуля pathlib для работы с файлами, тестирование с помощью pytest, а также Matplotlib, Plotty и Django. Если вы подумываете «А не заняться ли мне программированием?», то эта книга — идеальный старт. Не нужно больше ждать! Погнали!
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 670
Veröffentlichungsjahr: 2025
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Переводчик С. Черников
Эрик Мэтиз
Изучаем Python: программирование игр, визуализация данных, веб-приложения. 3-е изд. дополненное и переработанное. — СПб.: Питер, 2025.
ISBN 978-5-4461-4112-8
© ООО Издательство "Питер", 2025
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Интересно наблюдать за тем, как No Starch Press создает будущую классику, которая по праву может занять место рядом с более традиционными книгами по программированию. Эта книга — одна из них.
Грег Лейден (Greg Laden), ScienceBlogs
В книге рассматриваются довольно сложные проекты; материал излагается в последовательной, логичной и приятной манере, которая привлекает внимание читателя к теме.
Full Circle Magazine
Хорошая подача материала с доступными объяснениями фрагментов кода. Книга помогает читателю двигаться вперед шаг за шагом, представляя все более сложный код и объясняя все происходящее.
FlickThrough Reviews
Процесс изучения Python с этой книгой оставил чрезвычайно хорошее впечатление! Отличный вариант, если вы только начинаете изучать Python.
Mikke Goes Coding
Внутри вы найдете все перечисленное на обложке, причем изложенное лучшим способом… В книге представлено множество полезных упражнений, а также три сложных, но увлекательных проекта.
RealPython.com
Задающее быстрый темп, но охватывающее все темы руководство по программированию на Python. У вас в руках еще одна превосходная книга, которая дополнит вашу библиотеку и поможет наконец-то освоить Python.
TutorialEdge.net
Отличный вариант для начинающих без опыта программирования. Если вы ищете проверенное, несложное введение в этот очень глубокий язык, то рекомендуем эту книгу.
WhatPixel.com
Книга содержит буквально все, что вам нужно знать о Python, и даже чуточку больше.
FireBearStudio.com
Хотя книга и посвящена основам программирования именно на Python, она также учит навыкам чистого программирования, которые применимы к большинству других языков.
Great Lakes Geek
Моему отцу, который никогда не жалел времени, чтобы ответить на мои вопросы по программированию, и Эверу, который только начинает задавать мне свои вопросы.
Эрик Мэтиз (Eric Matthes) в течение 25 лет работал учителем физики и математики в средней школе и преподавал вводные курсы по Python всякий раз, когда мог найти способ внести их в учебный план. В настоящее время Эрик — профессиональный писатель и программист, а также участник ряда проектов с открытым исходным кодом. Его проекты преследуют самые разные цели: от помощи в прогнозировании оползней в горных районах до упрощения процесса развертывания проектов Django. В свободное время Эрик занимается альпинизмом и проводит время с семьей.
Кеннет Лав (Kenneth Love) живет на Тихоокеанском Северо-Западе со своей семьей и кошками. Он опытнейший программист на Python, участник различных проектов с открытым исходным кодом, преподаватель и докладчик на конференциях.
Предыдущие два издания книги получили множество положительных отзывов. Тираж составил более миллиона экземпляров, включая переводы на более чем десять языков. Я получал письма и сообщения как от десятилетних читателей, так и от пенсионеров, желающих освоить программирование для собственного удовольствия. Материал книги используется для обучения в школах и колледжах. Студенты, которым приходится иметь дело с более сложными учебниками, используют мою книгу как дополнительный источник для своих занятий; по их мнению, книга является хорошим подспорьем в учебе. Разные люди пользуются ею для повышения квалификации и работы над параллельными проектами. Короче говоря, книга используется для самых разнообразных целей — как я и надеялся.
Я был очень рад тому, что мне представилась возможность написать следующее издание. Python — устоявшийся язык, но продолжает развиваться, как и любой другой. При переработке материала книги я старался сделать его более доступным и компактным. Прочитав ее, вы получите все знания, которые позволят вам начать работу над собственными проектами, а также заложите прочный фундамент для дальнейшего обучения. Я обновил часть разделов и представил новые, более простые средства решения некоторых задач на языке Python. Кроме того, я доработал разделы, в которых те или иные аспекты языка были представлены недостаточно точно. Все проекты были полностью обновлены; в них задействуются только популярные библиотеки, имеющие качественное сопровождение, которыми вы можете пользоваться при создании собственных проектов.
Вот краткое перечисление изменений, внесенных в третье издание.
• В главе 1 описывается редактор VS Code, популярный среди начинающих программистов и профессионалов, полностью поддерживаемый всеми операционными системами.
• В главе 2 описываются новые методы removeprefix() и removesuffix(), которые пригодятся при работе с файлами и URL. В этой главе также представлен улучшенный функционал системы обработки ошибок Python: теперь она выводит гораздо больше конкретной информации, помогающей устранить неполадки в коде в случае сбоя.
• В главе 10 для работы с файлами используется модуль pathlib. Так реализуется гораздо более простой подход к чтению и записи файлов.
• В главе 11 для разработки автоматизированных тестов создаваемого кода мы воспользуемся библиотекой pytest. Она стала стандартным инструментом для написания тестов на Python. Ее интерфейс достаточно удобен для начинающих, а если вы продолжите карьеру программиста на Python, то будете использовать ее и в профессиональной среде.
• В проекте «Инопланетное вторжение» в главах 12–14 добавлена настройка, которая позволяет управлять частотой кадров и обеспечивать стабильную работу игры в разных операционных системах. Для создания флота пришельцев выбран более простой подход, а общая организация проекта существенно улучшена.
• Проекты по визуализации данных в главах 15–17 используют самые последние возможности Matplotlib и Plotly. В работе с Matplotlib описаны обновленные настройки стилизации. В проект случайного блуждания внесено небольшое улучшение, благодаря которому повышена точность вывода графиков, поэтому вы увидите больше закономерностей, когда будете создавать новое блуждание. Во всех проектах с Plotly теперь используется модуль Plotly Express, позволяющий генерировать первичные визуализации с помощью лишь нескольких строк кода. Вы сможете быстро просмотреть множество визуализаций и выбрать конкретный вид графика, а затем сосредоточиться на доработке его отдельных элементов.
• Проект «Журнал обучения», рассматриваемый в главах 18–20, создается с применением последних версий Django и Bootstrap. Некоторые компоненты проекта переименованы в целях оптимизации его структуры. Теперь проект развернут на Platform.sh — современном хостинге для проектов Django. Конфигурационные файлы YAML позволяют тонко настроить процесс развертывания. Такой подход профессиональные программисты используют при развертывании современных проектов Django.
• Приложение A полностью обновлено и содержит рекомендации по установке Python во всех распространенных операционных системах. В приложении Б приводятся подробные инструкции по настройке VS Code, а также представлен краткий обзор популярных современных редакторов кода и IDE. Приложение В содержит ссылки на наиболее популярные справочные онлайн-ресурсы. В приложении Г по-прежнему представлен вводный мини-курс по использованию системы управления версиями Git. Приложение Д написано специально для этого издания. Даже при наличии прекрасных руководств по развертыванию программ многое может пойти не так. В этом приложении вы найдете подробное руководство по устранению неполадок, которое пригодится, если процесс развертывания не удается с первой попытки.
Спасибо за то, что читаете эту книгу! Если у вас появятся вопросы или вы захотите поделиться своим мнением, не стесняйтесь и пишите мне в соцсетях.
Эта книга никогда не появилась бы на свет без великолепных, чрезвычайно профессиональных сотрудников издательства No Starch Press. Билл Поллок (Bill Pollock) предложил мне написать вводную часть книги, и я глубоко признателен ему за это предложение. Лиз Чедвик (Liz Chadwick) работала над всеми тремя изданиями, и книга стала, несомненно, лучше благодаря ее непосредственному участию. Идеи Евы Морроу (Eva Morrow) освежили и улучшили это издание. Кроме того, я ценю советы Дага Макнейра (Doug McNair) по использованию правильной грамматики без излишней формальности. Дженнифер Кеплер (Jennifer Kepler) руководила предпечатной подготовкой, превращая мои многочисленные файлы в безупречный макет.
Со многими сотрудниками No Starch Press, помогавшими добиться успеха с этой книгой, мне не довелось общаться. В издательстве трудится фантастическая команда маркетологов, которые не просто продают книги, а заботятся о том, чтобы читатели находили литературу, которая потенциально поможет достичь их целей. В издательстве также есть профессиональный отдел по работе с иностранными правами. Благодаря стараниям этой команды книга была переведена на многие языки и добралась до читателей по всему миру. Всем этим людям, с которыми я не работал напрямую, спасибо за то, что помогли книге найти свою аудиторию.
Я хотел бы отдельно поблагодарить Кеннета Лава, научного редактора всех трех изданий книги. Я познакомился с ним на конференции PyCon, и с тех пор его энтузиазм по отношению к языку и сообществу Python служит постоянным источником профессионального вдохновения. Кеннет, как всегда, не ограничился простой проверкой фактов и редактировал книгу с целью помочь начинающим программистам освоить язык Python и программирование в целом. Он также обратил внимание на моменты, давшие хороший результат в предыдущих изданиях, но которые можно было бы улучшить, если бы имелась возможность полностью их переписать. Таким образом, все найденные вами неточности остаются только на моей совести.
Я также хотел бы выразить признательность всем читателям, которые поделились своим опытом работы с книгой. Изучая основы программирования, можно изменить свой взгляд на мир, и иногда это глубоко влияет на людей. Слышать такие истории очень трогательно, и я благодарен всем, кто открыто делится своим опытом.
Я хочу поблагодарить своего отца, который познакомил меня с программированием, когда я был еще ребенком, и не побоялся, что я сломаю его технику. Спасибо моей жене Эрин за поддержку и помощь во время работы над книгой и моему сыну Эверу, любознательность которого постоянно вдохновляет меня.
У каждого программиста своя история о том, как он написал первую программу. Я начал изучать программирование еще в детстве, когда мой отец работал в Digital Equipment Corporation, одной из ведущих компаний современной компьютерной эры. Я написал свою первую программу на компьютере, который мой отец собрал в подвале нашего дома из различных компонентов. Компьютер представлял собой материнскую плату, подключенную к клавиатуре без корпуса, а в качестве монитора использовалась простейшая электронно-лучевая трубка. Моей первой программой стала игра по отгадыванию чисел, которая выглядела примерно так:
Я загадал число! Попробуйте отгадать мое число: 25
Слишком мало! Следующая попытка: 50
Слишком много! Следующая попытка: 42
Верно! Хотите сыграть снова? (да/нет) нет
Спасибо за игру!
Никогда не забуду, как это было здорово: моя семья играла в написанную мной игру, и все работало точно так, как я задумал.
Очень приятно создавать нечто предназначенное для конкретной цели и успешно решающее свою задачу. Программы, которые я пишу сейчас, намного серьезнее моих детских попыток, но чувство удовлетворения, которое я получаю, создавая работающую программу, остается практически тем же.
Цель книги — помочь читателю как можно быстрее освоить Python, чтобы он начал писать работающие программы (игры, визуализации данных и веб-приложения), и одновременно заложить основу в области программирования, которая будет полезна для дальнейших изысканий. Книга написана для людей любого возраста, которые прежде никогда не программировали на Python или вообще никогда не программировали. Если вы хотите быстро изучить азы программирования, чтобы сосредоточиться на интересных проектах, а также любите проверять свое понимание новых концепций, решая сложные задачи, — эта книга для вас. Она также прекрасно подходит для преподавателей, желающих предложить своим ученикам вводный курс программирования на основе проектов. Если вы студент, которому хочется иметь более доступное руководство по Python, чем предложенный вам учебник, то данная книга упростит ваше обучение. Она же поможет освоить программирование, если вы хотите сменить профессию. Эта книга хорошо зарекомендовала себя среди широкого круга читателей, имеющих самые разные цели.
Цель книги — сделать вас хорошим программистом вообще и хорошим программистом на Python в частности. Процесс обучения будет эффективным, и вы приобретете много полезных привычек, осваивая общие концепции программирования. Перевернув последнюю страницу книги, вы будете готовы к знакомству с более серьезными возможностями Python, а изучение вашего следующего языка программирования тоже упростится.
В части I будут представлены базовые концепции программирования, которые необходимо знать для написания программ на Python. Эти концепции ничем не отличаются от тех, которые рассматриваются в начале изучения почти любого языка программирования. Вы познакомитесь с разными видами данных и способами их хранения в своих программах. Будете создавать коллекции данных, такие как списки и словари, и работать с ними. Научитесь использовать циклы while и операторы if для проверки определенных условий и выполнения тех или иных разделов кода в зависимости от того, истинно условие или ложно, — это метод, который помогает автоматизировать многие процессы.
Вы научитесь получать входные данные от пользователя, чтобы ваши программы стали интерактивными, и выполнять их до тех пор, пока пользователь остается активным. Кроме того, вы узнаете, как написать функции, которые позволяют многократно использовать части ваших программ, чтобы вы могли написать блок кода для некоего действия один раз, а потом задействовать его многократно по мере необходимости. Затем вы примените эту концепцию к более сложному поведению классов, что позволит даже относительно простым программам реагировать на множество разнообразных ситуаций. Вы научитесь писать программы, корректно обрабатывающие многие типичные ошибки. Освоив каждую из этих базовых концепций, вы напишете ряд все более сложных программ, используя полученные знания. Наконец, вы сделаете первые шаги на пути к программированию среднего уровня: научитесь писать тесты для своего кода, чтобы вы могли продолжать разработку программ, не беспокоясь о возможном внесении багов. Весь материал части I подготовит вас к более сложным и масштабным проектам.
В части II полученные знания помогут вам создать три проекта. Вы можете взяться за любые из этих проектов в том порядке, который лучше подходит для вас. В первом проекте (главы 12–14) будет создан шутер «Инопланетное вторжение» в стиле классического хита Space Invaders, состоящий из многих уровней с нарастающей сложностью. Завершив этот проект, вы значительно продвинетесь в разработке собственных 2D-игр. Даже если вы не планируете стать разработчиком игр, работа над этим проектом — приятный способ связать воедино многое из того, что вы узнаете в части I.
Второй проект (главы 15–17) познакомит вас с визуализацией данных. Чтобы разобраться в огромных объемах доступной информации, специалисты по анализу данных применяют различные средства визуализации. Вы будете работать с разными наборами данных: теми, что генерируются в программах, которые вы скачиваете с онлайн-источников и которые ваши программы загружают автоматически. Завершив этот проект, вы сможете писать программы, обрабатывающие большие наборы данных и создающие визуальное представление самых разных видов информации.
В третьем проекте (главы 18–20) мы напишем небольшое веб-приложение «Журнал обучения». Этот проект позволяет фиксировать информацию, которую вы узнали в ходе изучения конкретной темы. Пользователь приложения сможет вести разные журналы по разным темам, позволять другим создавать учетные записи и вести собственные журналы. Вы также узнаете, как развернуть свой проект в Интернете, чтобы любой желающий мог получить к нему онлайн-доступ из любой точки мира.
Я публикую множество дополнительных материалов к книге на сайте https://ehmatthes.github.io/pcc_3e. В них содержится следующая информация.
• Инструкции по настройке. Онлайн-инструкции идентичны инструкциям, приведенным в книге, но содержат активные ссылки, с помощью которых можно переходить к различным фазам настройки. Если у вас возникнут какие-либо проблемы с настройкой, то обращайтесь к этому ресурсу.
• Обновления. Python, как и все языки, постоянно развивается. Я отслеживаю наборы обновлений, поэтому, если что-то не работает — обратитесь к этому ресурсу и проверьте, не было ли каких-либо изменений в инструкциях.
• Решения к упражнениям. Не жалейте времени на самостоятельное решение задач из разделов «Упражнения». Но если вы оказались в тупике и не знаете, что делать, ответы к большинству упражнений доступны на сайте.
• Шпаргалки. Полный набор шпаргалок с краткой информацией по основным концепциям также доступен для скачивания на сайте.
Каждый год я задумываюсь над тем, продолжать ли мне работать на Python или же перейти на другой язык — вероятно, более новый в мире программирования. И все же я продолжаю использовать Python по многим причинам. Этот язык невероятно эффективен: программы, написанные на нем, делают больше при меньшем объеме кода, чем требуется во многих других языках. Вдобавок синтаксис Python позволяет писать «чистый» код. Такой код легче читать и отлаживать, а также расширять и развивать по сравнению с другими языками.
Python используется для разных целей: создания игр и веб-приложений, решения бизнес-задач и разработки внутренних инструментов для разных интересных проектов. Кроме того, язык широко применяется в научной области для теоретических исследований и решения прикладных задач.
Впрочем, одной из самых важных причин использования этого языка для меня остается сообщество Python, состоящее из невероятно разных и благожелательных людей. Сообщество играет исключительно важную роль для программистов, поскольку программирование — не индивидуальное занятие. Многим из нас, даже самым опытным специалистам, приходится обращаться за советом к коллегам, которые уже решали похожие задачи. Доброжелательное сообщество, пронизанное связями между людьми, помогает решать задачи, и сообщество Python готово прийти на помощь людям, для которых это первый язык программирования или которые стали изучать Python, имея опыт работы на других языках.
Python — замечательный язык, так давайте браться за дело!
Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.
В части I представлены базовые концепции, необходимые для написания программ на языке Python. Многие из этих концепций встречаются во всех языках программирования, поэтому пригодятся вам на протяжении всей профессиональной карьеры.
В главе 1 вы установите Python на свой компьютер и запустите первую программу, которая выводит на экран сообщение Helloworld!.
В главе 2 вы научитесь хранить информацию в переменных, работать с текстовыми и числовыми данными.
В главах 3 и 4 вы познакомитесь со списками. Они позволяют хранить любой объем информации в одной переменной, что повышает эффективность работы с данными. Вы сможете работать с сотнями, тысячами и даже миллионами значений всего в нескольких строках кода.
В главе 5 будут представлены операторы if. С их помощью вы сможете написать код, который делает что-то одно, если некое условие истинно, и что-то другое, если оно ложно.
В главе 6 будет показано, как использовать словари Python, связывающие разные виды информации. Как и списки, словари могут содержать столько информации, сколько вы захотите в них поместить.
В главе 7 вы научитесь получать данные от пользователей, чтобы ваши программы стали интерактивными. Там же описаны циклы while, многократно выполняющие блоки кода, пока некое условие остается истинным.
В главе 8 вы займетесь написанием функций — именованных блоков кода, которые решают конкретную задачу и запускаются по мере необходимости.
В главе 9 представлены классы, предназначенные для моделирования объектов реального мира: собак, кошек, людей, машин, ракет и т.д.
Благодаря главе 10 вы научитесь работать с файлами и обрабатывать ошибки, что поможет защитить ваши программы от неожиданного сбоя. Вы сохраните данные перед закрытием программы и снова прочитаете их, когда она запустится повторно. Вы узнаете об исключениях Python, которые позволяют предвидеть ошибки и организовать их корректную обработку в программах.
В главе 11 вы научитесь писать тесты для своего кода. Они проверяют, что ваша программа работает так, как было задумано. В результате вы сможете дорабатывать свои программы, не беспокоясь о возможном внесении новых багов. Тестирование — один из первых навыков, отличающий новичка от программиста среднего уровня.
В этой главе вы запустите свою первую программу на языке Python — hello_world.py. Сначала проверите, есть ли на вашем компьютере последняя версия Python; если это не так, то установите ее. Вдобавок вы установите редактор кода для работы с вашими программами. Текстовые редакторы распознают код Python и выделяют синтаксические конструкции во время работы, упрощая понимание структуры кода разработчиком.
Python слегка отличается в разных операционных системах, поэтому вы должны учитывать некоторые аспекты. В этой главе мы проверим, правильно ли установлен Python в вашей системе.
Каждый язык программирования развивается по мере появления новых идей и технологий, и разработчики Python постоянно расширяют возможности и гибкость языка. На момент написания книги новейшей была версия 3.11, но все представленные здесь программы должны нормально работать в версии 3.9 или более поздней. Этот раздел поможет вам понять, установлен ли Python в вашей системе и нужно ли установить более новую версию. В приложении А содержится дополнительная информация по установке новейшей версии Python во всех основных операционных системах.
Вы можете запустить интерпретатор Python в терминальном окне, что позволяет опробовать фрагменты кода Python, не сохраняя и не запуская всю программу.
В книге встречаются фрагменты кода следующего вида:
>>> print("Hello Python interpreter!")
Hello Python interpreter!
Три символа угловых скобок (>>>), называемых приглашениемPython (Python prompt), означают, что вам следует использовать окно терминала. Жирным шрифтом выделен текст, который вам нужно ввести, а затем выполнить, нажав клавишу Enter. Большинство примеров в книге представляют собой небольшие независимые программы, которые вы будете запускать не из терминала, а из редактора, поскольку именно в нем вы будете писать бо́льшую часть кода. Но некоторые базовые концепции в целях более эффективной демонстрации будут показаны с помощью серии фрагментов кода, запускаемых в терминальном сеансе Python. Таким образом, три угловые скобки в листинге означают, что вы просматриваете код и выходные данные терминального сеанса. Чуть позже мы попробуем написать код в интерпретаторе для вашей системы.
Кроме того, редактор кода будет использоваться для создания простой программы HelloWorld!, что стало основой обучения программированию. В мире программирования издавна принято начинать освоение нового языка с программы, выводящей на экран сообщение Helloworld!, — считается, что это принесет удачу. Даже такая простая программа выполняет вполне конкретную функцию. Если она корректно запускается в вашей системе, то и любая программа, которую вы напишете на Python, тоже должна работать нормально.
VS Code — мощный, профессиональный редактор кода, бесплатный и удобный для начинающих. Он отлично подходит для создания как простых, так и сложных проектов, поэтому, освоив его в процессе изучения Python, вы сможете использовать его и в более крупных проектах. VS Code можно установить на все современные операционные системы, и он поддерживает большинство языков программирования, в том числе Python.
В приложении Б приведена информация о других редакторах. Если вам они интересны, то на данном этапе вы можете бегло просмотреть его. Если же вы хотите быстро перейти к программированию, то на первых порах работайте с VS Code, а возможность использования других редакторов рассмотрите позже, когда получите некий опыт программирования. В этой главе я опишу процесс установки VS Code для вашей операционной системы.
ПРИМЕЧАНИЕ
Если у вас уже установлен редактор кода и вы знаете, как его настроить для запуска программ на Python, то можете использовать его.
Python — кросс-платформенный язык программирования; это означает, что он работает во всех основных операционных системах. Написанная вами программа на языке Python должна выполняться на любом современном компьютере, на котором установлен Python. Однако способы настройки Python для разных операционных систем слегка различаются.
В этом разделе вы узнаете, как подготовить Python к работе в вашей системе. Сначала вы проверите, имеется ли новая версия Python в вашей системе, и если нет — установите ее. Затем вы установите VS Code. Процедура состоит всего из двух шагов, различающихся в разных операционных системах.
Затем вы запустите программу hello_world.py и устраните любые неполадки. Этот процесс будет описан для всех операционных систем, так что в итоге в вашем распоряжении появится простая и удобная среда программирования на Python.
Операционная система Windows по умолчанию не содержит интерпретатора Python. Скорее всего, вам придется установить Python, а затем и редактор кода VS Code.
Для начала проверьте, установлен ли Python в вашей системе. Откройте окно командной строки: введите command в меню Пуск и щелкните на приложении Command Prompt (Командная строка). В окне терминала введите команду python в нижнем регистре. Если на экране появится приглашение >>>, значит, Python установлен в вашей системе. Если же вы видите сообщение об ошибке, в котором говорится, что команда python не опознана системой, или открывается окно магазина Microsoft Store, то Python не установлен. Закройте магазин, если он открылся; рекомендуется загрузить официальный дистрибутив, а не версию, распространяемую корпорацией Microsoft.
Если Python не установлен в вашей системе или вы видите версию ниже 3.9, то скачайте программу установки Python для Windows. Откройте страницу https://python.org/ и наведите указатель мыши на ссылку Downloads (Загрузки). Появится кнопка для скачивания новейшей версии Python. Нажмите кнопку, которая запускает автоматическое скачивание правильного установочного пакета для вашей системы. По завершении скачивания запустите программу установки. Не забудьте установить флажок AddPythontoPATH (Добавить Python в PATH) — это упростит правильную настройку системы. На рис. 1.1 изображено окно мастера установки.
Рис. 1.1. Не забудьте установить флажок Add Python to PATH (Добавить Python в PATH)
Откройте окно командной строки и введите команду python в нижнем регистре. Если на экране появится приглашение Python (>>>), значит, система Windows обнаружила установленную версию Python:
C:\> python
Python 3.x.x (main, Jun . . . , 13:29:14) [MSC v.1932 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
ПРИМЕЧАНИЕ
Если вы не увидите этот (или похожий) вывод, то обращайтесь к более подробным инструкциям по установке, приведенным в приложении А.
Введите в сеансе Python следующую строку:
>>> print("Hello Python interpreter!")
Hello Python interpreter!
>>>
Вы должны увидеть вывод HelloPythoninterpreter!. Каждый раз, когда вы захотите выполнить фрагмент кода Python, откройте окно командной строки и запустите терминальный сеанс Python. Чтобы закрыть сеанс, нажмите Сtrl+Z и Enter или введите команду exit().
Программу установки для VS Code можно скачать по адресу https://code.visualstudio.com. Нажмите кнопку Download for Windows (Скачать для Windows) и запустите программу установки. Пропустите следующие разделы о macOS и Linux и выполните действия, описанные в разделе «Запуск программы Hello World» далее в этой главе.
В последних версиях macOS интерпретатора Python, как правило, нет, поэтому вам нужно будет установить его, если вы еще не сделали этого. В этом подразделе мы установим новейшую версию Python, а затем редактор кода VS Code и убедимся в том, что он настроен правильно.
ПРИМЕЧАНИЕ
В старых версиях операционной системы macOS предустановлен интерпретатор Python 2. Это устаревшая версия, которую не рекомендуется использовать.
Откройте терминальное окно (команда меню ApplicationsUtilitiesTerminal (ПриложенияУтилитыТерминал)). Можно также нажать +Пробел, ввести terminal и нажать Enter. Чтобы проверить, установлена ли у вас последняя версия Python, введите команду python3. Скорее всего, вы увидите сообщение с предложением установки консольных инструментов разработчика (command line developer tools). Их рекомендуется устанавливать только после Python, поэтому закройте сообщение, если оно появится.
Если появилось сообщение, что у вас установлен Python 3.9 или более поздняя версия, то вы можете пропустить следующий пункт и перейти к пункту «Запуск Python в терминальном сеансе» далее в этой главе. Если вы видите версию, предшествующую Python 3.9, то следуйте инструкциям, описанным ниже, чтобы установить последнюю версию.
Обратите внимание: если вы выполняете примеры из этой книги в системе macOS, то вам нужно вводить команду не python, а python3, чтобы использовать версию Python 3. В большинстве систем macOS команда python либо ссылается на устаревшую версию Python, которая должна использоваться только внутренними системными инструментами, либо выдает сообщение об ошибке.
Программа установки Python доступна на сайте https://python.org/. Наведите указатель мыши на ссылку Downloads (Загрузки). Появится кнопка для скачивания новейшей версии Python. Нажмите кнопку, которая запускает автоматическое скачивание правильного установочного пакета для вашей системы. По завершении скачивания запустите программу установки.
Когда установка будет завершена, должно открыться окно программы Finder. Дважды щелкните на файле InstallCertificates.command. Запустив его, вы сможете легко устанавливать дополнительные библиотеки, которые понадобятся вам в реальных проектах, в том числе тех, которые описаны в части II.
Для выполнения фрагментов кода Python можно открыть терминальное окно и ввести команду python3:
$ python3
Python 3.x.x (v3.11.0:eb0004c271, Jun . . . , 10:03:01)
[Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
Эта команда запускает сеанс Python. Вы должны увидеть приглашение Python (>>>), означающее, что система macOS обнаружила версию Python, которую вы только что установили.
Введите в терминальном сеансе следующую строку:
>>> print("Hello Python interpreter!")
Hello Python interpreter!
>>>
Вы должны увидеть сообщение HelloPythoninterpreter!, которое выводится прямо в текущем терминальном окне. Закрыть интерпретатор Python можно, нажав сочетание клавиш Сtrl+D или введя команду exit().
ПРИМЕЧАНИЕ
В новых версиях операционной системы macOS в приглашении в терминале вместо знака доллара ($) вы увидите знак процента (%).
Чтобы установить редактор VS Code, необходимо скачать программу установки, доступную на https://code.visualstudio.com. Щелкните на ссылке Download (Скачать) и скачайте программу установки для macOS. После того как программа установки будет загружена, откройте окно Finder и перейдите в папку Downloads (Загрузки). Перетащите программу установки Visual Studio Code в папку Applications (Приложения), а затем дважды щелкните на программе, чтобы запустить ее.
Пропустите следующий подраздел о Python в Linux и выполните действия, описанные в разделе «Запуск программы Hello World» далее в этой главе.
Системы семейства Linux ориентированы на программистов, поэтому Python уже установлен на большинстве компьютеров Linux. Люди, которые занимаются разработкой и сопровождением Linux, ожидают, что в какой-то момент вы займетесь программированием, и всячески способствуют этому. Так что если вы захотите сделать это, вам почти ничего не придется устанавливать, а количество необходимых настроек будет минимальным.
Откройте терминальное окно, запустив приложение Terminal (Терминал) в вашей системе (в Ubuntu нажмите Ctrl+Alt+T). Чтобы проверить, какая версия Python установлена в вашей системе, введите команду python3 (со строчной буквы p). Если Python в системе есть, эта команда запустит интерпретатор Python. На экране появится информация о том, какая версия Python установлена, и приглашение >>>, после которого можно вводить команды Python:
$ python3
Python 3.10.4 (main, Apr . . . , 09:04:19) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Этот вывод сообщает, что Python 3.10.4 в настоящее время является версией Python по умолчанию, установленной на данном компьютере. Нажмите Ctrl+D или введите exit(), чтобы выйти из приглашения Python и вернуться к приглашению терминала. Каждый раз, когда в книге встречается команда python, вводите вместо нее команду python3.
Для запуска кода из книги необходима версия не ниже Python 3.9. Если в системе установлена более ранняя версия или вам требуется обновить текущую версию более новой, то обратитесь к приложению А.
Для выполнения фрагментов кода Python можно открыть терминальное окно и ввести команду python3, как мы поступили при проверке версии. Сделайте то же самое и, когда Python будет запущен, введите в терминальном сеансе следующую строку:
>>> print("Hello Python interpreter!")
Hello Python interpreter!
>>>
Сообщение выводится прямо в текущем терминальном окне. Помните, что закрыть интерпретатор Python можно, нажав Сtrl+D или введя команду exit().
В системе Ubuntu Linux редактор VS Code устанавливается из Ubuntu Software Center. Щелкните на значке UbuntuSoftware (Программное обеспечение Ubuntu) в меню и найдите вариант vscode. Щелкните на приложении Visual Studio Code (иногда просто code), а затем нажмите кнопку Install (Установить). После установки найдите в операционной системе программу VS Code и запустите ее.
После того как в вашей системе будут установлены последние версии Python и VS Code, все почти готово к запуску вашей первой программы Python, написанной в редакторе кода. Но перед этим необходимо установить расширение Python для VS Code.
VS Code работает со многими языками программирования; чтобы программисту на Python использовать возможности редактора максимально эффективно, нужно установить расширение Python. Оно добавляет поддержку разработки, редактирования и запуска программ на языке Python.
Чтобы установить расширение Python, щелкните на значке Manage (Управление) в виде шестеренки в левом нижнем углу приложения VS Code. В появившемся меню выберите пункт Extensions (Расширения). Введите слово python в строке поиска и выберите расширение Python. (Если видите несколько расширений с таким названием, выберите разработанное корпорацией Microsoft.) Нажмите кнопку Install (Установить) и установите все дополнительные инструменты, необходимые системе для завершения установки. Если появится сообщение о том, что требуется установить Python, но вы уже сделали это, то можете проигнорировать его.
ПРИМЕЧАНИЕ
Если вы используете macOS и во всплывающем окне вам предлагается установить консольные инструменты разработчика, нажмите кнопку Install (Установить). Может появиться сообщение о том, что установка займет длительное время, но не обращайте внимания, она должна занять 10–20 минут при высокоскоростном доступе к Интернету.
Прежде чем писать первую программу, создайте на рабочем столе в своей системе папку python_work для своих проектов. В именах файлов и папок лучше использовать строчные буквы и символы подчеркивания вместо пробелов в соответствии с правилами именования, принятыми в Python. Вы можете создать эту папку не на рабочем столе, а в любом другом каталоге, но вам будет проще выполнять последующие шаги, если вы сохраните ее прямо на рабочем столе.
Запустите программу VS Code и закройте вкладку Get Started (Начало работы), если она открылась. Создайте новый файл, выбрав команду меню FileNew File (ФайлСоздать файл) или нажмите Ctrl+N (+N в macOS). Сохраните созданный файл Python hello_world.py в папке python_work. Расширение .py сообщает VS Code, что код в файле написан на языке Python; эта информация помогает редактору запустить программу и правильно выделить цветом элементы синтаксиса.
После того как файл будет сохранен, введите в редакторе кода следующую строку:
hello_world.py
print("Hello Python world!")
Программу можно запустить с помощью команды меню RunRun Without Debugging (ЗапускЗапуск без отладки) или сочетания клавиш Ctrl+F5 (+B в macOS). В нижней части окна VS Code должно отображаться терминальное окно со следующим текстом:
Hello Python world!
Скорее всего, вы увидите дополнительный вывод, информирующий о версии интерпретатора Python, который использовался для запуска вашей программы. Если вы хотите упростить отображаемую информацию, чтобы видеть только вывод вашей программы, то обратитесь к приложению Б. В нем же вы найдете полезные советы о том, как использовать VS Code более эффективно.
Если вы не увидели этот вывод, то проверьте каждый символ во введенной строке. Может, вы случайно набрали print с прописной буквы? Пропустили одну или обе кавычки или круглые скобки? В языках программирования используется предельно конкретный синтаксис, и при малейшем его нарушении произойдет ошибка. Если программа так и не заработала, то прочитайте следующий раздел.
Если вам так и не удалось запустить программу hello_world.py, то, возможно, помогут следующие полезные советы (кстати, они могут пригодиться для решения любых проблем в программах).
• Если программа содержит серьезную ошибку, то Python выводит данные трассировки (traceback). Python анализирует содержимое файла, пытается выявить проблему и составить отчет. Проверьте данные трассировки. Возможно, они подскажут, что именно мешает выполнению программы.
• Отойдите от компьютера, отдохните и попробуйте снова. Помните, что синтаксис в программировании очень важен; даже пропущенное двоеточие, неверно расположенная кавычка или непарная скобка могут помешать нормальной работе программы. Перечитайте соответствующие части главы, еще раз проанализируйте ваш код и попробуйте найти ошибку.
• Начните заново. Вероятно, ничего переустанавливать не придется, но попробуйте удалить файл hello_world.py и создать его с нуля.
• Попросите кого-нибудь повторить действия, описанные в этой главе, на вашем (или на другом) компьютере. Внимательно понаблюдайте за происходящим. Возможно, вы упустили какую-нибудь мелочь, которую заметят другие.
• Ознакомьтесь с дополнительными инструкциями по установке, приведенными в приложении А; некоторые из указанных там подробностей могут помочь вам решить проблему.
• Найдите специалиста, хорошо знающего Python, и попросите его помочь вам. Вполне может оказаться, что такой специалист есть среди ваших знакомых.
• Инструкции по настройке среды программирования, приведенные в этой главе, также доступны по адресу https://ehmatthes.github.io/pcc_3e. Онлайн-версия этих инструкций может быть более удобной для вас, поскольку вы можете просто вырезать и вставлять код и нажимать ссылки, ведущие на нужные вам ресурсы.
• Обратитесь за помощью в Интернет. В приложении В перечислены некоторые ресурсы (форумы, чаты и т.д.), где вы сможете проконсультироваться у людей, уже сталкивавшихся с вашей проблемой.
Не стесняйтесь обращаться к опытным программистам. Любой программист в какой-то момент своей жизни заходил в тупик, и многие программисты охотно помогут вам правильно настроить вашу систему. Если вы сможете четко объяснить, что хотите сделать, какие действия уже пытались выполнить и какие результаты получили, то, скорее всего, кто-нибудь вам поможет. Как упоминалось во введении, сообщество Python доброжелательно относится к новичкам.
Python должен нормально работать на любом современном компьютере. На первых порах проблемы могут быть весьма неприятными, но с ними стоит разобраться. Когда программа hello_world.py заработает, вы сможете приступить к изучению Python, а ваша работа станет намного более интересной и принесет больше удовольствия.
Большинство программ, написанных вами в редакторе кода, будут запускаться прямо из него. Тем не менее иногда бывает полезно запускать программы из терминала — например, если вы хотите просто выполнить готовую программу, не открывая ее для редактирования.
Это можно сделать в любой системе с установленным Python; необходимо лишь знать путь к каталогу, в котором хранится файл программы. Приведенные ниже примеры предполагают, что вы сохранили файл hello_world.py в папке python_work на рабочем столе.
Команда cd (от change directory — «изменить каталог») используется для перемещения по файловой системе в окне командной строки. Команда dir (от directory — «каталог») выводит список всех файлов в текущем каталоге.
Откройте новое терминальное окно и введите следующие команды для запуска программы hello_world.py:
C:\> cd Desktop\python_work
C:\Desktop\python_work> dir
hello_world.py
C:\Desktop\python_work> python hello_world.py
Hello Python world!
Команда cd используется для перехода к папке python_work, находящейся в папке Desktop. Затем команда dir проверяет, что файл hello_world.py действительно находится в этой папке. Далее файл запускается командой pythonhello_world.py.
Большинство программ будет нормально запускаться из редактора. Но со временем ваша работа станет более сложной, и, возможно, вы предпочтете запускать некоторые из своих программ из терминала.
Запуск программы Python в терминальном сеансе в системах Linux и macOS осуществляется одинаково. Команда cd используется для перемещения по файловой системе в терминальном сеансе. Команда ls (от list — «список») выводит список всех не скрытых файлов в текущем каталоге.
Откройте новое терминальное окно и введите следующие команды для запуска программы hello_world.py:
~$ cd Desktop/python_work/
~/Desktop/python_work$ ls
hello_world.py
~/Desktop/python_work$ python3 hello_world.py
Hello Python world!
Команда cd используется для перехода к папке python_work, находящейся в каталоге Desktop. Затем команда ls проверяет, что файл hello_world.py действительно находится в этом каталоге. Далее файл запускается командой python3hello_world.py.
Большинство программ будет нормально запускаться из редактора. Но со временем ваша работа станет более сложной, и, возможно, вы предпочтете запускать некоторые из своих программ из терминала.
Упражнения
Упражнения этой главы в основном направлены на самостоятельный поиск информации. Начиная с главы 2, упражнения будут ориентированы на решение задач, основанных на изложенном материале.
1.1. python.org. Изучите главную страницу Python (https://python.org/) и найдите темы, которые вас заинтересуют. Со временем вы лучше узнаете Python, и другие разделы этого сайта покажутся вам более полезными.
1.2. Опечатки в программе Hello World. Откройте только что созданный файл hello_world.py. Сделайте где-нибудь намеренную опечатку и снова запустите программу. Удастся ли вам сделать опечатку, которая приводит к ошибке? Поймете ли вы смысл сообщения об ошибке? Удастся ли вам сделать опечатку, которая не приводит к ошибке? Как вы думаете, почему на этот раз выполнение обходится без ошибки?
1.3. Неограниченные возможности. Если бы вы были программистом с неограниченными возможностями, то за какой проект взялись бы? Сейчас вы учитесь программировать. Если вы ясно представляете конечную цель, то сможете немедленно применить новые навыки на практике; попробуйте набросать общие описания программ, над которыми вам хотелось бы поработать. Заведите «блокнот идей», к которому сможете обращаться каждый раз, когда соберетесь начать новый проект. Выделите пару минут и составьте описания трех программ, которые вам хотелось бы создать.
В этой главе вы познакомились с языком Python и узнали, как установить его в своей системе. Кроме того, вы установили редактор кода, упрощающий работу над кодом Python. Вы научились выполнять фрагменты кода Python в терминальном сеансе и запустили свою первую настоящую программу hello_world.py. Скорее всего, попутно вы кое-что узнали о поиске и исправлении ошибок.
В следующей главе рассматриваются структуры данных, с которыми вы будете работать в программах Python. Кроме того, вы научитесь пользоваться переменными Python.
В этой главе представлены разные виды данных, с которыми вы будете работать в своих программах Python. Вы также научитесь использовать переменные для представления данных в своих программах.
Давайте подробнее рассмотрим, что же делает Python при запуске hello_world.py. Оказывается, он проделывает достаточно серьезную работу даже для такой простой программы:
hello_world.py
print("Hello Python world!")
При выполнении этого кода выводится следующий текст:
Hello Python world!
Суффикс .py в имени файла hello_world.py указывает, что файл является программой Python. Редактор запускает файл в интерпретатореPython, который читает программу и определяет, что означает каждое слово в программе. Например, обнаружив слово print, за которым следуют круглые скобки, интерпретатор выводит на экран текст, находящийся внутри них.
Когда вы пишете программу, редактор выделяет цветом разные ее части. Например, он понимает, что print() — имя функции, и выделяет это слово одним цветом. А текст HelloPythonworld! не является кодом Python, поэтому выделяется другим цветом. Этот механизм, называемый цветовым выделением синтаксических элементов (syntax highlighting), очень поможет вам, когда вы начнете писать собственные программы.
Попробуем использовать переменную в программе hello_world.py. Добавьте новую строку в начало файла и измените вторую строку:
hello_world.py
print(message)
Запустите программу и посмотрите, что получится. Программа выводит уже знакомый вам результат:
Hello Python world!
Вы добавили в программу переменнуюmessage. В каждой переменной хранится значение, то есть связанные с ней данные. В нашем случае значением является текст "HelloPythonworld!".
Добавление переменной немного усложняет задачу интерпретатора Python. Во время обработки первой строки он связывает текст "HelloPythonworld!" с переменной message. А добравшись до второй строки, выводит на экран значение, связанное с именем message.
Немного расширим программу hello_world.py, чтобы она выводила второе сообщение. Добавьте в hello_world.py пустую строку, а после нее еще две строки кода:
print(message)
print(message)
Теперь при выполнении hello_world.py на экране должны появляться две строки:
Hello Python world!
Hello Python Crash Course world!
Вы можете в любой момент изменить значение переменной в своей программе; Python постоянно отслеживает его текущее состояние.
При работе с переменными в языке Python необходимо соблюдать некоторые правила и рекомендации. Нарушение правил приведет к ошибке; рекомендации всего лишь помогают писать более понятный и удобочитаемый код. Работая с переменными, помните о следующем.
• Имена переменных могут состоять только из букв, цифр и символов подчеркивания. Они могут начинаться с буквы или символа подчеркивания, но не с цифры. Например, переменной можно присвоить имя message_1, но не 1_message.
• Пробелы в именах переменных запрещены, а для разделения слов в именах переменных используются символы подчеркивания. Например, имя greeting_message допустимо, а имя greetingmessage вызовет ошибку.
• Не используйте в качестве имен переменных названия функций и ключевые слова Python; иначе говоря, не используйте слова, которые зарезервированы в Python для конкретной цели, — например, слово print (см. раздел «Ключевые слова и встроенные функции Python» приложения А).
• Имена переменных должны быть короткими, но содержательными. Например, имя name лучше n, имя student_name лучше s_n, а имя name_length лучше length_of_persons_name.
• Будьте внимательны при использовании строчной буквы l и прописной буквы O, поскольку они похожи на цифры 1 и 0.
Вероятно, вы не сразу научитесь создавать хорошие имена переменных, особенно когда программы станут сложнее и интереснее. Но когда вы начнете писать больше программ и читать код, созданный другими разработчиками, ваши имена переменных станут более содержательными.
ПРИМЕЧАНИЕ
На данном этапе ограничьтесь именами переменных, записанными в нижнем регистре. Использование символов верхнего регистра не приведет к ошибке, но они имеют специальное значение в именах переменных, о котором мы поговорим в других главах.
Каждый программист совершает ошибки, а большинство программистов делают это ежедневно. И хотя даже опытный программист не застрахован от ошибок, он знает, как эффективно реагировать на них. Рассмотрим типичную ошибку, которую вы довольно часто будете совершать на первых порах, и выясним, как ее исправить.
Для начала напишем код с намеренно внесенной ошибкой. Введите следующий фрагмент (неправильно написанное слово mesage выделено жирным шрифтом):
print(mesage)
Когда в программе происходит ошибка, интерпретатор Python всеми силами старается помочь вам найти ее причину. Если программа не выполняется нормально, интерпретатор предоставляет данные трассировки — информацию о том, в каком месте кода находился интерпретатор при возникновении проблемы. Ниже приведен пример трассировки, которую Python выдает после того, как вы случайно сделали опечатку в имени переменной:
Traceback (most recent call last):
❶ File "hello_world.py", line 2, in <module>
❷ print(mesage)
^^^^^^
❸ NameError: name 'mesage' is not defined. Did you mean: 'message'?
В строке ❶ сообщается, что ошибка произошла в строке 2 файла hello_world.py. Интерпретатор выводит номер строки, чтобы вам было проще найти ошибку ❷, и сообщает тип обнаруженной ошибки ❸. В данном случае была обнаружена ошибка в имени, и сообщается, что переменная с указанным именем (mesage) не определена. Другими словами, Python не распознает имя переменной. Обычно такие ошибки возникают в том случае, если вы забыли присвоить значение переменной перед ее использованием или ошиблись при вводе имени. Если Python обнаружит имя переменной, похожее на нераспознанное, то появится запрос, не это ли имя вы хотели использовать.
Конечно, в данном примере в имени переменной во второй строке пропущена буква s. Интерпретатор Python не проверяет код на наличие опечаток, но следит за тем, чтобы имена переменных записывались одинаково. Например, вот что происходит, если имя message будет неправильно записано еще в одном месте кода:
print(mesage)
На этот раз программа выполняется успешно!
Hello Python Crash Course reader!
Имена переменных совпадают, поэтому Python не видит проблему. Языки программирования строги, но орфография их совершенно не волнует. Как следствие, при создании имен переменных и написании кода вам не нужно жестко соблюдать правила орфографии и грамматики английского языка.
Многие ошибки программирования сводятся к простым опечаткам — случайной замене одного символа в одной строке программы. Если вы потратили много времени на поиск одной из таких ошибок, то знайте, что вы не одиноки. Многие опытные и талантливые программисты проводят долгие часы в поисках подобных мелких ошибок. Нечто подобное будет часто происходить и с вами — просто посмейтесь и продолжайте работать.
Переменные часто описывают как «ящики» для хранения значений. Такое сравнение может быть полезным на первых порах работы с переменными, но оно неточно описывает внутреннее представление переменных в Python. Намного правильнее представлять переменные как метки, которые можно назначать переменным. Можно также сказать, что переменная содержит ссылку на некоторое значение.
Вероятно, это различие ни на что не повлияет в ваших первых программах. И все же лучше узнать о нем раньше, чем позже. В какой-то момент вы столкнетесь с неожиданным поведением переменных, и более точное понимание их работы поможет вам разобраться в том, что же происходит в вашем коде.
ПРИМЕЧАНИЕ
Как лучше всего освоить новые концепции программирования? Попытайтесь использовать их в своей программе. Если в ходе работы над упражнением вы зайдете в тупик, то попробуйте на какое-то время заняться чем-нибудь другим. Если это не поможет, перечитайте соответствующую часть этой главы. Если и это не помогло, то следуйте рекомендациям из приложения В.
Упражнения
Напишите отдельную программу для выполнения каждого из следующих упражнений. Сохраните каждую программу в файле, имя которого подчиняется стандартным правилам Python по использованию строчных букв и символов подчеркивания — например, simple_message.py и simple_messages.py.
2.1. Простое сообщение. Сохраните текстовое сообщение в переменной и выведите его на экран.
2.2. Простые сообщения. Сохраните сообщение в переменной и выведите его. Затем замените значение переменной другим сообщением и выведите это новое сообщение.
Многие программы определяют и собирают некие данные, а затем делают с ними что-то полезное, поэтому желательно выделить основные разновидности данных. Начнем со строк. На первый взгляд, они достаточно просты, но с ними можно работать разными способами.
Строка представляет собой простую последовательность символов. Любая последовательность символов, заключенная в кавычки, в Python считается строкой; при этом строки могут быть заключены как в одиночные, так и в двойные кавычки:
"This is a string."
'This is also a string.'
Это правило позволяет использовать внутренние кавычки и апострофы в строках:
'I told my friend, "Python is my favorite language!"'
"The language 'Python' is named after Monty Python, not the snake."
"One of Python's strengths is its diverse and supportive community."
Рассмотрим некоторые типичные операции со строками.
Одна из простейших операций, выполняемых со строками, — изменение регистра символов. Взгляните на следующий фрагмент кода и попробуйте определить, что в нем происходит:
name.py
print(name.title())
Сохраните файл как name.py и запустите его. Вывод программы должен выглядеть так:
Ada Lovelace
В этом примере в переменной name сохраняется строка, состоящая из букв нижнего регистра "adalovelace". За именем переменной в функции print() следует вызов метода title(). Метод представляет собой действие, которое Python выполняет с данными. Благодаря точке (.) после name в конструкции name.title() Python получает указание применить метод title() к переменной name. За именем метода всегда следует пара круглых скобок, поскольку методам для выполнения их работы часто требуется дополнительная информация. Она указывается в скобках. Функции title() дополнительная информация не нужна, поэтому в круглых скобках ничего нет.
Метод title()выполняет капитализацию начальных букв каждого слова (переводит их в верхний регистр), тогда как все остальные символы выводятся в нижнем. Например, данная возможность может быть полезна, если в вашей программе входные значения Ada, ADA и ada должны рассматриваться как одно и то же имя и все они должны отображаться в виде Ada.
Для работы с регистром существуют и другие полезные методы. Так, все символы строки можно преобразовать в верхний или нижний регистр:
print(name.upper())
print(name.lower())
Программа выводит следующий результат:
ADA LOVELACE
ada lovelace
Метод lower() особенно полезен для хранения данных. Нередко программист не может рассчитывать на то, что пользователи введут все данные, точно соблюдая регистр, поэтому строки перед сохранением преобразуются в нижний регистр. Затем, когда потребуется вывести информацию, используется регистр, наиболее подходящий для каждой строки.
В некоторых ситуациях требуется использовать значения переменных внутри строки. Представьте, что имя и фамилия хранятся в разных переменных и вы хотите объединить их для вывода полного имени:
full_name.py
print(full_name)
Чтобы вставить значение переменной в строку, поставьте букву f непосредственно перед открывающей кавычкой ❶. Заключите имя (или имена) переменных, которые должны использоваться внутри строки, в фигурные скобки. Python заменит каждую переменную ее значением при выводе строки.
Такие строки называются f-строками. Буква f происходит от слова format, поскольку Python форматирует строку, заменяя имена переменных в фигурных скобках их значениями. Приведенный выше код выводит следующий результат:
ada lovelace
С помощью f-строк можно выполнять много интересных действий. Например, составлять сложные сообщения с информацией, хранящейся в переменных. Рассмотрим пример:
❶ print(f"Hello, {full_name.title()}!")
Полное имя используется для вывода приветственного сообщения ❶, а метод title() выполняет капитализацию начальных букв каждого слова (переводит в верхний регистр). Этот фрагмент возвращает простое, хорошо отформатированное сообщение:
Hello, Ada Lovelace!
Кроме того, f-строки можно использовать для составления сообщения, которое затем сохраняется в переменной:
❷ print(message)
Этот код тоже выводит сообщение Hello,AdaLovelace!, но сохранение текста сообщения в переменной ❶ существенно упрощает финальный вызов функции print()❷.
В программировании термином «пробельный символ» (whitespace) называются такие непечатаемые символы, как пробелы, табуляции и символы конца строки. Пробельные символы структурируют текст, чтобы пользователю было удобнее читать его.
Для добавления в текст табуляции используется комбинация символов \t:
>>> print("Python")
Python
>>> print("\tPython")
Python
Разрывы строк добавляются с помощью комбинации символов \n:
>>> print("Languages:\nPython\nC\nJavaScript")
Languages:
Python
C
JavaScript
Табуляции и разрывы строк могут стоять в одной строке. Так, благодаря последовательности "\n\t" Python получает указание начать текст с новой строки, в начале которой располагается табуляция. В следующем примере показано, как использовать одну строку кода для создания четырех строк вывода:
>>> print("Languages:\n\tPython\n\tC\n\tJavaScript")
Languages:
Python
C
JavaScript
Разрывы строк и табуляции часто будут встречаться в двух следующих главах, когда программы начнут выдавать много строк вывода, полученных всего из нескольких строк кода.
Лишние пробельные символы могут вызвать путаницу в программах. Для человека строки 'python' и 'python' внешне неотличимы, но для программы это совершенно разные строки. Python видит лишний пробел в 'python' и считает, что он действительно важен, — до тех пор пока вы не сообщите о противоположном.
Обращайте внимание на пробельные символы, поскольку в программах часто приходится сравнивать строки, чтобы проверить их содержимое на совпадение. Типичный пример — проверка имен пользователей при входе на сайт. Лишние пробельные символы могут создавать путаницу и в более простых ситуациях. К счастью, Python позволяет легко удалить лишние пробельные символы из данных, введенных пользователем.
Python может искать лишние пробельные символы у левого и правого краев строки. Чтобы убедиться в том, что у правого края (в конце) строки нет пробельных символов, вызовите метод rstrip():
❷ >>> favorite_language
'python '
❸ >>> favorite_language.rstrip()
'python'
❹ >>> favorite_language
'python '
Значение, хранящееся в переменной favorite_language❶, содержит лишний пробел в конце строки. Выводя это значение в терминальном сеансе Python, вы видите пробел в конце значения ❷. Когда метод rstrip() работает с переменной favorite_language❸, этот лишний символ удаляется. Впрочем, удаление временное — если вы снова запросите значение favorite_language, то увидите, что строка совпадает с исходной, включая лишний пробельный символ ❹.
Чтобы навсегда удалить пробельный символ из строки, следует записать исправленное значение обратно в переменную:
>>> favorite_language
'python'
Сначала пробельные символы удаляются в конце строки, а потом значение записывается в исходную переменную ❶. Операция изменения значения переменной с последующим его сохранением в исходной переменной выполняется в программировании часто. Так, значение переменной может изменяться в ходе выполнения программы или в ответ на действия пользователя.
Пробельные символы также можно удалить у левого края (в начале) строки с помощью метода lstrip(), а метод strip() удаляет пробельные символы с обоих концов:
❷ >>> favorite_language.rstrip()
' python'
❸ >>> favorite_language.lstrip()
'python '
❹ >>> favorite_language.strip()
'python'
В этом примере исходное значение содержит пробельные символы в начале и конце ❶. Затем пробельные символы удаляются у правого края ❷, у левого края ❸ и с обоих концов строки ❹. Поэкспериментируйте с функциями удаления пробельных символов, это поможет вам освоить работу со строками. На практике эти функции чаще всего применяются для очистки пользовательского ввода перед его сохранением в программе.
Помимо пробельных символов, при работе со строками часто требуется удалять и префиксы. В качестве примера рассмотрим URL с префиксом https://. Попробуем удалить этот префикс, чтобы работать только с той частью URL, которую пользователи должны ввести в адресной строке. Вот как это сделать:
>>> nostarch_url.removeprefix('https://')
'nostarch.com'
Укажите имя переменной, затем точку и метод removeprefix(). В круглых скобках укажите префикс, который нужно удалить из исходной строки.
Как и в случае удаления пробельных символов, метод removeprefix() не изменяет исходную строку. Если вы хотите сохранить в переменной новое значение с удаленным префиксом, то присвойте его либо исходной, либо новой переменной:
Если в адресной строке браузера URL отображается без префикса https://, то, вероятно, «за кадром» используется метод, подобный removeprefix().
Синтаксические ошибки (syntax error) встречаются в программах относительно регулярно. Они возникают тогда, когда Python не распознает часть вашей программы как действительный код. Например, если заключить апостроф в одиночные кавычки, то произойдет ошибка. Это происходит из-за того, что Python интерпретирует все символы от первой одиночной кавычки до апострофа как строку. После этого он пытается интерпретировать остаток текста строки как код Python, что порождает ошибки.
Разберемся, как же правильно использовать одиночные или двойные кавычки. Сохраните следующую программу как файл apostrophe.py и запустите ее:
apostrophe.py
print(message)
Апостроф находится в строке, заключенной в двойные кавычки, так что у интерпретатора Python не возникает проблем с правильным пониманием следующей строки:
One of Python's strengths is its diverse community.
Однако при использовании одиночных кавычек Python не сможет определить, где должна заканчиваться строка:
print(message)
Программа выводит следующий результат:
File "apostrophe.py", line 1
❶ ^
SyntaxError: unterminated string literal (detected at line 1)
Из выходных данных видно, что ошибка происходит сразу же после второй одиночной кавычки ❶. Эта синтаксическая ошибка указывает на то, что интерпретатор не распознает какую-то конструкцию как действительный код Python. Ошибки могут возникать по разным причинам; я буду выделять наиболее распространенные по мере того, как они станут нам встречаться. Вы будете часто сталкиваться с синтаксическими ошибками, учась писать правильный код Python. Кроме того, ошибки этой категории являются наиболее неконкретными, поэтому их очень трудно находить и исправлять. Если вы зайдете в тупик из-за особенно сложной ошибки, то обратитесь к рекомендациям в приложении В.
ПРИМЕЧАНИЕ
Функция цветового выделения синтаксических элементов ускоряет выявление некоторых синтаксических ошибок прямо во время написания программы. Если вы увидите, что код Python выделяется как обычный текст (или обычный текст выделяется как код Python), то, скорее всего, в вашем файле где-то пропущена кавычка.
Упражнения
Сохраните код каждого из следующих упражнений в отдельном файле вида name_cases.py. Если у вас возникнут проблемы, то сделайте перерыв или обратитесь к рекомендациям в приложении В.
2.3. Личное сообщение. Сохраните имя пользователя в переменной и выведите сообщение, предназначенное для конкретного человека. Сообщение должно быть простым, например: «Здравствуйте, Эрик, не хотите ли вы изучить Python сегодня?»
2.4. Регистр символов в именах. Сохраните имя пользователя в переменной и выведите его в нижнем регистре, верхнем регистре и с капитализацией начальных букв каждого слова.
2.5. Знаменитая цитата. Найдите известное высказывание, которое вам понравилось. Выведите текст цитаты с именем автора. Результат должен выглядеть примерно так (включая кавычки):
Альберт Эйнштейн однажды сказал: «Тот, кто никогда не совершал ошибок, никогда не пробовал ничего нового».
2.6. Знаменитая цитата 2. Повторите упражнение 2.5, однако на этот раз сохраните имя автора цитаты в переменной famous_person. Затем составьте сообщение и сохраните его в новой переменной message. Выведите свое сообщение.
2.7. Удаление пробельных символов. Сохраните имя пользователя в переменной. Добавьте в начале и конце имени несколько пробельных символов. Проследите за тем, чтобы каждая последовательность символов "\t" и "\n" встречалась по крайней мере один раз.
Выведите имя, чтобы были видны пробельные символы в начале и конце строки. Затем выведите его снова, используя каждую из функций удаления пробельных символов: lstrip(), rstrip() и strip().
2.8. Расширения файлов. В Python доступен метод removesuffix(), функционирующий точно так же, как removeprefix(). Присвойте переменной filename значение 'python_notes.txt'. Затем используйте метод removesuffix(), чтобы отобразить имя файла без расширения, как это делают некоторые файловые браузеры.
Числа очень часто применяются в программировании для ведения счета в играх, представления данных в визуализациях, хранения информации в веб-приложениях и т.д. В Python числовые данные делятся на несколько категорий в соответствии со способом их использования. Для начала посмотрим, как Python работает с целыми числами, поскольку с ними возникает меньше всего проблем.
В Python с целыми числами можно выполнять операции сложения (+), вычитания (–), умножения (*) и деления (/).
>>> 2 + 3
5
>>> 3 - 2
1
>>> 2 * 3
6
>>> 3 / 2
1.5
В терминальном сеансе Python просто возвращает результат операции. Для представления операции возведения в степень в Python используется сдвоенный знак умножения:
>>> 3 ** 2
9
>>> 3 ** 3
27
>>> 10 ** 6
1000000
Кроме того, в Python существует определенный порядок операций, что позволяет использовать несколько операций в одном выражении. Круглые скобки применяются для изменения порядка операций, чтобы выражение могло вычисляться в нужном порядке. Пример:
>>> 2 + 3*4
14
>>> (2 + 3) * 4
20
Пробелы в этих примерах не влияют на то, как Python вычисляет выражения; они просто помогают быстрее найти приоритетные операции при чтении кода.
В Python числа, имеющие дробную часть, называются вещественными (или числами с плавающей точкой). Этот термин используется в большинстве языков программирования, и точка «плавает» потому, что может появиться в любой позиции числа. Во всех языках программирования механизмы обработки вещественных чисел тщательно прорабатываются, чтобы числа вели себя предсказуемым образом, независимо от позиции точки.
В большинстве случаев вы можете использовать вещественные числа, не особенно задумываясь об их поведении. Просто введите нужные числа, а Python, скорее всего, сделает именно то, что вы от него хотите:
>>> 0.1 + 0.1
0.2
>>> 0.2 + 0.2
0.4
>>> 2 * 0.1
0.2
>>> 2 * 0.2
0.4
Однако в некоторых ситуациях вдруг оказывается, что результат содержит неожиданно большое количество разрядов в дробной части:
>>> 0.2 + 0.1
0.30000000000000004
>>> 3 * 0.1
0.30000000000000004
Нечто подобное может произойти в любом языке; для беспокойства нет причин. Python пытается подобрать как можно более точное представление результата, что иногда бывает нелегко из-за особенностей внутреннего представления чисел в компьютерах. Пока просто не обращайте внимания на «лишние» разряды; вы узнаете, как поступать в подобных ситуациях, когда эта проблема станет актуальной для вас в проектах части II.
При делении двух любых чисел — даже если это целые числа, частным от деления которых является целое число, — вы всегда получаете вещественное число:
>>> 4/2
2.0
При смешении целого и вещественного числа в любой другой операции вы также получаете вещественное число:
>>> 1 + 2.0
3.0
>>> 2 * 3.0
6.0
>>> 3.0 ** 2
9.0
Python по умолчанию использует вещественный тип для результата любой операции, в которой задействовано вещественное число, даже если результат является целым числом.
В записи целых чисел можно группировать цифры, используя символы подчеркивания, чтобы числа лучше читались:
При выводе числа, определяемого с помощью символов подчеркивания, Python выводит только цифры:
>>> print(universe_age)
14000000000