Вы находитесь на странице: 1из 38

Содержание курса

Курс посвящен основам программирования на языке Python. Он состоит из 8 модулей.

Модули курса:
Ввод и вывод данных
Условный оператор
Типы данных (int, float, str, bool)
Цикл for и while
Строковый тип данных (str)
Списки
Функции
Работа над проектом
Каждый модуль состоит из нескольких уроков, которые представляют собой наборы
конспектов и заданий. Обычно один урок посвящен одному понятию. Очень важно после
прочтения конспекта выполнить задания.
Все задачи можно решать любое количество раз. За неверные попытки баллы не
снижаются, не бойтесь ошибаться! Все ваши прошлые решения остаются доступны по
ссылке под полем задачи.
В конце некоторых модулей вас ожидают самостоятельные и контрольные работы с
ограничением времени на их выполнение. Они помогут понять, насколько хорошо вы
усвоили тему.
Сроки и дедлайны. Дедлайнов по этому курсу нет, вы можете проходить его в удобное
время. Но для достижения хороших результатов, советуем заниматься регулярно и не
забрасывать курс надолго.
Общение. Вы будете заниматься в компании других студентов курса. Общаться друг с
другом можно на форуме. Пожалуйста, прежде чем писать, прочитайте правила общения,
они в следующем шаге этого раздела.
Как задать вопрос. Если у вас возникли сложности с конкретным уроком, обращайтесь к
команде курса в комментариях к уроку.
Общение на форуме
Для успешного и продуктивного обучения мы просим вас придерживаться следующих
правил:
Правило №1 «Молчаливое». Студенты курса не пишут ответы на задания в
комментариях. При этом обсуждение заданий допускается и даже приветствуется.
Правило №2 «Самостоятельное». Студенты курса не пользуются помощью при
выполнении заданий.
Правило №3 «Уважительное». Студенты курса общаются друг с другом, с автором и
администраторами вежливо и с уважением, помогая друг другу в конструктивном диалоге
без использования ненормативной лексики.
Правило №4 «Авторское». Мнения студентов курса и лекторов могут различаться, тем
не менее, тесты и задания составлены на основании лекций.
Графические обозначения в курсе
Чтобы обратить ваше внимание на определенные виды информации, мы добавили
графические обозначения.
Вот что они означают:

1
Графический
Описание
значок

Важное примечание

Дополнительная информация

Задача

Правильное форматирование кода в соответствии со стандартом


PEP 8

Решение проблем

Манифест по изучению программирования


Текст написан по мотивам моего опыта: я работал 6 лет программистом в разных
командах разработчиков, 10 лет преподавателем в школе, 3 года автором в школе онлайн
курсов.
Мы привыкли к обучению по принципу: смотри сюда и повторяй за мной. Обычно так
обучают в школах. Такой подход перестает работать классу к восьмому. Ученики задают
себе вопрос: зачем делать то, что не приносит удовольствия? В школе пытаются
«вбивать» знания в каждого, независимо от его желания. Но обучение неэффективно без
главного условия: ученик должен принимать самое активное участие в получении знаний.
Освоить IT-профессию невозможно без тысяч часов самостоятельного решения задач.
Обучение после школы — неважно, в колледже, вузе, на курсах или даже у личного
ментора (обратите внимание!) — подразумевает по большей части самостоятельное
освоение и проработку материала.
Роль преподавателя (ментора) сводится к следующему:
систематизация учебной программы, построение плана: от простого к сложному;
помощь при затруднениях;
указание на ошибки;
подпитывание мотивации;
моральная поддержка.
Всю остальную работу учащийся выполняет сам.
Обучение — это на 80% самостоятельная работа. Потенциально успешный
программист мне виден уже после выполнения первых домашних заданий: его решения
основаны не только на материале, который разбирали на занятии в группе, но и на
дополнительных сведениях, найденных самостоятельно.
Хочу выделить 4 принципа изучения программирования, которые по моему опыту
работают.
В первую очередь тренируйте базовые навыки
В программировании (как, впрочем, и в других отраслях) существуют базовые вещи, и
первое, на чем нужно сосредоточиться — доведение базовых навыков до автоматизма.
2
Когда ваш мозг не расходует много времени на обращение с базовыми понятиями, вы
способны действовать продуктивно и адекватно решать задачи. Азбуку нужно знать
твердо, тогда скорость обучения и работы будет высокой. Каждый следующий уровень
знаний ложится поверх предыдущего и содержит все меньше принципиально новой
информации, поскольку опирается на усвоенные знания.
Именно поэтому наши курсы содержат так много задач.
Пишите код
В памяти надежно сохраняется только то, что мы подкрепляем собственными действиями,
опытом. Так устроен мозг. Когда читаем чужой код или смотрим видеолекцию, часто все
настолько понятно, что кажется: “Зачем мне это повторять, ведь все ясно”. Это иллюзия!
Стоит попытаться повторить логику, написать код своими руками, как тут же столкнемся
с кучей сложностей и непонятных вещей, которые не удастся разрешить без подсказок.
Копирование чужого кода тоже не способствует глубокому пониманию и усвоению
навыка.
Нужно как можно больше разбираться с кодом и самостоятельно писать программы.,В
идеале - работать над собственным проектом, пусть это будет даже калькулятор. Можно
создать крутой калькулятор и при этом повторить (освежить в памяти) множество тем,
начиная от переменных и заканчивая лямбда-функциями. И не старайтесь делать всё
идеально, достаточно просто хорошо. Мы растем, и то, что сегодня хорошо, успеем в
будущем сделать идеальным (если это кому-нибудь нужно).
Чтение книг и просмотр лекций - хорошо, но без использования теории на практике мы не
учимся.
P.S. Я очень люблю читать книги и смотреть лекции.
Занимайтесь регулярно
Рекомендую уделять учебе каждый день по 2-3 часа (можно и больше). Это полезнее, чем
10-часовой интенсив раз в неделю.
Нерегулярные занятия абсолютно неэффективны, потому что навыки не закрепляются,
знания рассеиваются, про мотивацию и говорить не приходится.
Важно выработать привычку учиться постоянно.
Вам должно быть непонятно
Звучит странно, правда? Если вам что-то непонятно и вы тупите, это абсолютно
нормально. Не нужно в такой ситуации считать себя недостаточно умным и неспособным
изучить программирование. Думаете Senior программисты не тупят? Еще как. Они могут
не сразу что-то понять, но не сдаются и изучают вопрос глубже! Даже очень опытные,
матерые программисты часто не могут разобраться с чем-то новым. Они не стесняются
обращаться за помощью. Но! Здесь есть одно важное “но”. Спрашивать нужно только
после того, как с десяток раз попытаетесь разрешить проблему сами.
Классический вопрос на форуме наших курсов: “Что не так с моей программой?”
Открываю проблемный код, запускаю программу, сразу выдается ошибка с
расшифровкой. Интересно, человек, который задал вопрос, пытался запустить СВОЮ
программу? Явно нет. Такой подход не позволит стать хорошим программистом. Задавая
вопрос на форуме или в комментариях, нужно уточнять, что конкретно вы уже
предприняли для решения, какие ваши шаги оказались безуспешными.
Многие темы наших курсов — например, элементы функционального программирования,
анонимные функции, функции высшего порядка, итераторы, генераторы — не самые
простые вещи. Требуется время и труд, чтобы эта информация уложилась в голове.
Если кажется, что учиться программированию легко, значит, вы не учитесь.
О себе
Если думаете, что мне было легко изучить программирование, то глубоко заблуждаетесь.
Я стартовал достаточно поздно по меркам программистов, аж на первом курсе ВУЗа. С
преподавателем повезло (Мария Макаренко, здрасте). Было тяжело, как сейчас помню,
даже вложенные циклы понять, а про рекурсию вообще молчу. Однажды поймал себя на
мысли: “А может быть, не твое это - программирование? Ну математик и математик, раз
рекурсию не можешь понять”. Но я не сдался, отложил непонятное в дальний ящик, и
дальше изучал программирование. Когда в следующий раз вернулся к рекурсии, был
приятно удивлен: понял как она работает и мог решить практически любую задачу на эту
тему. Какой вывод? Не сдавайтесь! Если что-то непонятно, читайте книги, читайте
3
интернет (в мое время информации было намного меньше, чем сейчас), пишите код,
реализуйте проекты. Отложите сложное, чтобы рассмотреть еще раз позже, при этом
работайте над собой, развивайтесь. Всегда можно вернуться с новыми знаниями, силами,
умениями. Вы будете приятно удивлены. Поверьте мне.
И да, я начал изучать язык Python, когда писал “Поколение Python: курс для
начинающих”. До этого моим языком был C#. Как видите, мне это не помешало создать
лучший курс по Python (Stepik Awards 2020).
Вывод
Никакой курс (даже наши курсы 😢) не сделают из вас программиста без
самообразования. Курсы – лишь способ достижения этой цели. Они могут сделать путь к
успеху удобнее и быстрее.
Цель образовательных курсов - сделать процесс обучения проще и эффективнее. Но никто
в мире не сможет учиться за вас.
Тимур Гуев, автор курсов “Поколение Python”
Структура курса
"Поколение Python: курс для начинающих" состоит из:
Теоретических конспектов
Тестовых задач
Задач на программирование

Теоретические конспекты
Теоретические конспекты содержат информацию по теме урока. Информации в конспекте
всегда достаточно, чтобы решить следующие за ним тестовые задачи и задачи на
программирование. Некоторые конспекты содержат секцию примечания с
дополнительными сведениями или интересными фактами.

4
Обращайте внимание на сноски, отмеченные как важные.

Если не получается решить тестовую задачу или задачу на программирование, имеет


смысл вернуться к конспекту и еще раз внимательно его прочитать.
Тестовые задачи
Могут быть в виде:
1) тестов с единственным верным вариантом ответа;

2) тестов с несколькими верными ответами;

3) численных задач (ответ - число);

5
4) текстовых задач (ответ - строка текста);

5) задач на сопоставление;

6) задач на сортировку;

6
7) задач с использованием таблиц.

Задачи на программирование
Задачи на программирование делятся на три категории:
базовая — 55 баллов;
повышенного уровня сложности помечена перчиком 🌶️и оценивается в 1010 баллов;
высокого уровня сложности помечена двумя перчиками 🌶️🌶️и оценивается в 2020 баллов.
После трех попыток решения задачи повышенного и высокого уровня сложности
открывается доступ на форум, где задачу обсуждают решившие ее. Для каждой такой
задачи есть закрепленное авторами курса образцовое решение.

Чтобы открылся следующий модуль в курсе нужно набрать не менее 30\%30%


баллов в предыдущем.
Как проверяются задачи на программирование?
Задачи на программирование проверяются автоматически. Вашей программе подаются на
вход данные, а проверяется результат ее работы. У каждой задачи на программирование
имеется секция input/output, где указаны некоторые входные и ожидаемые выходные
данные.

Важно понимать, что на странице задачи вы видите лишь часть тестов, которые позволяют
лучше понять принцип работы программы.

Полный набор тестов спрятан в выпадающий блок


7
Тестовые данные 🟢
Рекомендуем заглядывать в этот блок, если после первых попыток решения ваша
программа не проходит проверку и вы не можете самостоятельно разобраться в причинах.

Не следует зашивать тестовые данные в свои программы. Нужно писать программу


так, чтобы она работала одинаково правильно на любых входных данных.
Что делать, если задача решена неверно?
Если ваша программа работает неверно на одном из тестов, отображенных в секции
input/output задачи, то вы получите подробную информацию относительно ошибки. В
частности, можно увидеть входные данные, ожидаемые выходные данные, а также данные
возвращенные программой и не совпадающие с ожидаемыми.
Для исправления ошибки, мы настоятельно рекомендуем еще раз прочитать код
программы и условие задачи.

Тестирование своей программы


На платформе Stepik есть встроенная возможность тестирования своей программы. Для
того, чтобы протестировать свою программу нужно нажать на черную кнопку Запустить
код.

По умолчанию при тестировании программы подставляется значение из первого теста в


задаче. Однако вы можете изменять входные данные и смотреть как меняется результат
работы программы.

Мы настоятельно рекомендуем тестировать свои программы перед тем как отправлять их


на проверку.

8
Примечание. В условиях некоторых задач даются формулы, которые нужно использовать
в программах. Рекомендуем набирать эти формулы вручную, а не копировать из условия.
Из-за того, что Python видит разницу между символами -, − и —, наши типографически
красивые формулы не работают как код.
Тема урока: введение в программирование
История языка Python
Сильные и слабые стороны Python
Python 2 VS Python 3
Установка Python на компьютер
Установка Wing IDE на компьютер
Аннотация. Что такое программа и какие существуют языки программирования? Чем
хорош язык Python? Как установить на компьютер интерпретатор Python и среду
разработки Wing IDE?
Введение
Компьютерная программа — список команд (инструкций) для компьютера. Команды
могут быть любыми, например:
считать информацию с клавиатуры;
произвести арифметические вычисления (+, −, *, /);
вывести информацию на экран.
В каждом компьютере установлено много разнообразных программ. Например, Google
Chrome, через которую вы, скорее всего, проходите этот курс, — это программа-браузер.
Она позволяет просматривать страницы сайтов в интернете. Программа Skype позволяет
совершать звонки и обмениваться мгновенными сообщениями. В конце концов, сама
операционная система, будь то Windows, OS X или Linux, тоже программа.
Для создания программ используются языки программирования. Выбор языка
программирования, как правило, продиктован особенностями самой программы.
Язык программирования
Язык программирования — набор определенных правил, по которым компьютер может
понимать команды (инструкции) и выполнять их. Текст программы на любом языке
программирования, называется программным кодом.
Языки программирования бывают компилируемые и интерпретируемые. Если
программа написана на компилируемом языке (C, C++, Pascal), то перед выполнением её
нужно полностью проверить на наличие синтаксических ошибок и уже после этого
перевести в понятную для компьютера форму — машинный код. Это делает специальная
программа, которая называется компилятором.
Если программа написана на интерпретируемом языке (Python, PHP, Ruby), она не
переводится в машинный код целиком. Вместо этого специальная программа, которая
называется интерпретатором, идет по коду, анализирует его и выполняет каждую
отдельную команду.
Существуют языки программирования, которые совмещают оба подхода (C#, Java). В
таких языках код исходной программы сначала компилируется в промежуточный код
(байт-код), а уже потом, во время выполнения, переводится в машинный код.
Язык Python
Язык Python разработал голландский программист Гвидо Ван Россум (Guido van Rossum)
в 1991 году. Гвидо был фанатом британского комедийного сериала «Monty Python’s Flying
Circus», откуда и пришло название языка.

9
Гви Monty
до Ван Россум Python’s Flying Circus
Python 2 VS Python 3
Основные версии языка Python – Python 2 и Python 3 Версия Python 2 считается
устаревающей, версия 3 — более новой и современной. Почему не откажутся от второй
версии? Если коротко, Python 3 не имеет полной обратной совместимости с предыдущей
версией: на Python 2 написано очень много программ, и у разработчиков нет возможности
переписать всё на новую версию.
В нашем курсе мы будем пользоваться только Python 3 и не будем говорить о Python 2.
Преимущества Python
Это интерпретируемый язык программирования:
он не требует отдельного этапа компиляции;
программа на языке Python запускается прямо из исходного кода;
Это высокоуровневый язык программирования;
Это платформонезависимый язык:
программы на Python можно создавать на разных операционных системах (Linux,
Windows, OS X);
программы на Python можно запускать на разных операционных системах (Linux,
Windows, OS X);
Это open source проект;
Это простой язык;
Это встраиваемый скриптовый язык;
Это динамический язык, что упрощает написание несложных программ;
Для Python существует огромная библиотека классов на любой вкус.
Недостатки Python
Низкая скорость выполнения по сравнению с такими языками, как C и C++;
Динамическая типизация языка — минус при написании сложных программ.
Задачи, решаемые с помощью Python
Python подходит для решения широкого спектра задач. Разобьем их на категории:
Системное программирование. Встроенные в Python интерфейсы доступа к службам
операционных систем делают его идеальным инструментом для создания переносимых
программ и утилит системного администрирования;
Графические приложения. Простота Python и быстрота разработки делают его отличным
средством создания графического интерфейса. В состав Python входит стандартный
объектно-ориентированный интерфейс к GUI API;
10
Веб-приложения. С помощью дополнительных фреймворков на языке Python (Django,
Flask, Pyramid) можно создавать полнофункциональные сайты;
Веб-сценарии. Python поставляется вместе со стандартными интернет-модулями, которые
позволяют программам выполнять разнообразные сетевые операции как в режиме
клиента, так и в режиме сервера;
Интеграция компонентов. Возможность Python расширяться и встраиваться в системы
на языке C++ делает его удобным для описания поведения других систем и компонентов;
Приложения баз данных. В Python имеются интерфейсы доступа ко всем основным
реляционным базам данных: Sybase, Oracle, Informix, ODBC, MySQL, PostgreSQL, SQLite
и многим другим. С их помощью можно создавать приложения баз данных.
Проекты, в которых используется Python
Компания Google использует Python в своей поисковой системе;
Компании Intel, Cisco, Hewlett-Packard, Seagate, Qualcomm и IBM, используют Python для
тестирования аппаратного обеспечения;
Сервис YouTube в значительной степени реализован на Python;
Агентство национальной безопасности (NSA) использует Python для шифрования и
анализа данных;
Компании JPMorgan Chase, UBS, Getco и Citadel применяют Python для прогнозирования
финансового рынка;
Программа BitTorrent для обмена файлами в пиринговых сетях написана на языке Python;
NASA, Los Alamos, JPL и Fermilab используют Python для научных вычислений.
❤️Happy Pythoning! 🐍
Философия Python
Разработчики языка Python придерживаются определённой философии
программирования, называемой «The Zen of Python». Её текст выдаётся интерпретатором
Python по команде import this (работает один раз за сессию). Автором этой философии
считается Тим Петерс (Tim Peters).
В оригинале
Beautiful is better than ugly;
Explicit is better than implicit;
Simple is better than complex;
Complex is better than complicated;
Flat is better than nested;
Sparse is better than dense;
Readability counts;
Special cases aren't special enough to break the rules;
Although practicality beats purity;
Errors should never pass silently;
Unless explicitly silenced;
In the face of ambiguity, refuse the temptation to guess;
There should be one — and preferably only one — obvious way to do it;
Although that way may not be obvious at first unless you're Dutch;
Now is better than never;
Although never is often better than *right* now;
If the implementation is hard to explain, it's a bad idea;
If the implementation is easy to explain, it may be a good idea;
Namespaces are one honking great idea — let's do more of those!
Перевод на русский язык
Красивое лучше, чем уродливое;
Явное лучше, чем неявное;
Простое лучше, чем сложное;
Сложное лучше, чем запутанное;
Плоское лучше, чем вложенное;
Разреженное лучше, чем плотное;
Читаемость имеет значение;
Особые случаи не настолько особые, чтобы нарушать правила;
11
При этом практичность важнее безупречности;
Ошибки никогда не должны замалчиваться;
Если не замалчиваются явно;
Встретив двусмысленность, отбрось искушение угадать;
Должен существовать один — и, желательно, только один — очевидный способ сделать
это;
Хотя он поначалу может быть и не очевиден, если вы не голландец;
Сейчас лучше, чем никогда;
Хотя никогда зачастую лучше, чем прямо сейчас;
Если реализацию сложно объяснить — идея плоха;
Если реализацию легко объяснить — идея, возможно, хороша;
Пространства имён — отличная вещь! Давайте будем делать их больше!

2.1 Введение. Знакомство с Python


Python является
интерпретируемым языком
компилируемым языком

Преимуществами языка Python являются


платформонезависимость
встраиваемость
простота
наличие большой библиотеки классов

Недостатками языка Python являются

низкая скорость выполнения программ


динамическая типизация (для сложных программ)

Какие задачи можно решать, используя язык Python?


создание высокопроизводительных серверов
создание приложений анализа данных
создание приложений баз данных
создание веб-приложений
создание операционных систем
написание низкоуровневых драйверов
создание графических приложений GUI
создание системных утилит

Установка Python на Windows 🐍


Язык Python относится к свободному программному обеспечению, поэтому его можно
скачать с официального сайта, свободно распространять и устанавливать на все
современные операционные системы.
Шаг 1. Скачайте установщик Python 3
Откройте окно браузера и перейдите на сайт python.org;
Кликните по ссылке Downloads;
Кликните по желтой кнопке Download Python 3.x.

12
Шаг 2. Запустите установщик
Установите галочку напротив Add Python 3.x to PATH;
Кликните Install Now;
Через несколько минут на вашем компьютере будет установлен Python 🐍

13
На момент создания курса последней версией является Python 3.8.1.
Среда разработки Wing IDE
Команды для интерпретатора можно писать в обычном текстовом редакторе (например, в
"Блокноте"). Но чаще для этого пользуются специальной программой, которая называется
средой разработки (англ. IDE, Integrated Development Environment).
Среда разработки — тоже текстовый редактор, но с дополнительными возможностями.
Например, она умеет сама находить на компьютере программу-интерпретатор и запускать
программу одной кнопкой. Среда разработки, кроме того, форматирует написанный вами
код, чтобы его удобно было читать, а иногда даже подсказывает, где вы допустили
ошибку.
Мы будем использовать среду разработки Wing IDE. У нее есть официальная бесплатная
версия для образовательных целей, которая называется Wing IDE 101. Она доступна для
всех операционных систем: Windows, Linux, OS X.
Установка Wing IDE на Windows
Шаг 1. Скачайте установщик Wing 101
Откройте окно браузера и перейдите по ссылке;
Кликните по зелёной кнопке Windows Installer;
Если загрузка не началась, кликните по ссылке для скачивания.

14
Шаг 2. Запустите установщик
Следуйте указаниям установщика, нажимая кнопку Next;
Через несколько минут на вашем компьютере будет установлена IDE wing 101.
Шаг 3. Запустите Wing IDE
Убедитесь, что Wing IDE использует последнюю версию Python;
Если Wing IDE использует другую версию Python, то установите её самостоятельно:
выберите меню Edit → Configure Python;
Выберите в пункте Python Executable точку Custom и в выпадающем списке выберите
последнюю версию Python;
Нажмите на кнопку OK. Теперь Wing IDE использует последнюю установленную версию
Python.

15
На момент создания курса последней версией является Python 3.8.1.
Тема урока: ввод-вывод данных
Вывод данных, команда print()
Ввод данных, команда input()
Решение задач
Аннотация. Ввод и вывод данных в языке Python. Несложные программы, которые умеют
что-то выводить на экран (команда print) и считывать информацию с клавиатуры
(команда input() ).
Вывод данных, команда print
Для вывода данных на экран используется команда print() .
Внутри круглых скобок пишем, что хотим вывести на экран. Если это текст, то
обязательно указываем его внутри кавычек. Кавычки могут быть одинарными или
двойными. Только обязательно ставим одинаковые до и после текста.
16
Например, следующий код:
print('Мы изучаем язык Python')
выведет на экран текст:
Мы изучаем язык Python

Запомни: кавычки могут быть и одинарными, и двойными. Следующие две


строки делают одно и то же.
print('Python')
print("Python")
То, что мы пишем в круглых скобках у команды print(), называется аргументами или
параметрами команды.
Команда print() позволяет указывать несколько аргументов, в таком случае их надо
отделять запятыми.
Например, следующий код:
print('Скоро я', 'буду программировать', 'на языке', 'Python!')
выведет на экран текст:
Скоро я⎵буду программировать⎵на языке⎵Python!
Обратите внимание, в качестве разделителя при выводе данных между аргументами
команды используется символ пробел. По умолчанию команда print() добавляет ровно
один пробел между всеми своими аргументами. Например, следующая программа:
print('1', '2', '4', '8', '16')
выводит числа 1 2 4 8 16 . Числа выведены ровно через один пробел.

Запомни: при написании кода, между аргументами команды print() после запятой
мы ставим 1 символ пробел. Это общепринятое соглашение в языке Python. Этот символ
пробела не влияет на вывод данных.
Примечания
Примечание 1. Команда print() записывается только маленькими буквами, другое
написание недопустимо, так как в Python строчные и заглавные буквы различны.
Примечание 2. Каждая последующая команда print() выводит указанный текст с новой
строки. Например, следующая программа:
print('Какой хороший день!')
print('Работать мне не лень!')
выведет на экран две строки:
Какой хороший день!
Работать мне не лень!
Примечание 3. Команда print() с пустым списком аргументов просто вставляет новую
пустую строку. Например:
print('Какой хороший день!')
print()
print('Работать мне не лень!')
выведет на экран три строки, одна из которых пустая:
Какой хороший день!

Работать мне не лень!


Примечание 4. Почему в Python можно использовать как одинарные, так и двойные
кавычки для обрамления текста? Ответ очень прост — часто кавычки это часть текста. И
чтобы Python мог правильно распознать такой текст, пользуемся разными:

17
если в тексте нужны одинарные кавычки, то для обрамления такого текста используем
двойные кавычки;
если в тексте нужны двойные кавычки, то обрамляем его одинарными.
Результатом выполнения кода:
print('В тексте есть "двойные" кавычки')
print("В тексте есть 'одинарные' кавычки")
будет:
В тексте есть "двойные" кавычки
В тексте есть 'одинарные' кавычки

2.2 Команды print и input


Команда print() используется для
считывания данных с клавиатуры
вывода данных на экран

Значения для вывода, указываемые через запятую в команде print() , называются


параметрами
аргументами
символами
строками

Здравствуй, мир!
Напишите программу, которая выводит на экран текст «Здравствуй, мир!» (без кавычек).
Примечание 1. Проверяющая система будет сравнивать результат вашей программы и
правильный ответ посимвольно. Это означает, что выводить нужно ровно такую строку,
которая указана в условии задачи.
Примечание 2. Проверяющая система пользуется стандартным выводом (stdout, команда
print() ).
Тестовые данные 🟢
Номер теста Входные данные Выходные данные

1 Здравствуй, мир!
Sample Input:
Sample Output:
Здравствуй, мир!
Write a program, test using stdin → stdout

Счастливая последовательность 1
В популярном сериале «Остаться в живых» использовалась последовательность чисел 4 8
15 16 23 42, которая принесла героям удачу и помогла сорвать джекпот в лотерее.

18
Напишите программу, которая выводит данную последовательность чисел с одним
пробелом между ними.
Примечание. Текст '4 8 15 16 23 42' не использовать. Воспользуйтесь возможностью
команды  print()  выводить несколько аргументов, указанных через запятую.

Счастливая последовательность 2
Измените предыдущую программу так, чтобы каждое
число последовательности 4 8 15 16 23 42 печаталось на отдельной строке.
Примечание. Каждая последующая команда  print()  выводит указанный текст, начиная с
новой строки.

19
Звездный треугольник
Напишите программу, которая выводит указанный треугольник, состоящий из звездочек
(*).

20
Ввод данных, команда input
Все предыдущие программы выводили на экран текст, известный в момент написания
программного кода. Однако программы могут работать с данными, которые станут
известны только во время выполнения программы. Другими словами, программы могут
считывать данные, а затем их использовать.
Для считывания данных в языке Python используется команда  input() .
Рассмотрим следующую программу:
print('Как тебя зовут?')
name = input()
print('Привет,', name)
Сначала программа распечатает текст на экран «Как тебя зовут?». Далее программа
будет ждать от пользователя ввода данных. Ввод данных реализуется с помощью
команды  input() .
Команда  input()  всегда пишется с круглыми скобками. Она работает так: когда
программа доходит до места, где есть  input() , она ждет, пока пользователь введёт текст
с клавиатуры (ввод завершается нажатием клавиши Enter). Введенная строка
подставляется на место  input() .
То есть, если вы ввели строку «Parrot», программа дальше будет работать так, как будто
на месте  input()  было написано «Parrot».
Таким образом,  input()  получает от пользователя какие-то данные и вместо вызова
подставляет строковое значение, в нашем случае записывает его в качестве
значения переменной  name .
Что такое переменные и что значит сохранить в переменной значение, подробнее
поговорим чуть позже, а пока запоминаем:

Команда  print()  выводит на экран данные.

21
Команда  input()  считывает введенные с клавиатуры данные.
Примечания
Примечание. Очень часто перед считыванием данных мы печатаем некоторый текст,
чтобы пользователь, который вводит эти данные понимал, что именно от него требуется.
Например, в программе
print('Как тебя зовут?')
name = input()
print('Привет,', name)
мы сначала выведем текст «Как тебя зовут?», а уже потом считаем данные.
Поскольку это достаточно распространённый сценарий, то в языке Python можно
выводить текст, передавая его в качестве параметра в команду  input() . Предыдущий код
можно переписать так:
name = input('Как тебя зовут?')
print('Привет,', name)

Команда  input()  используется для

Установите порядок действий:


print('Какой язык программирования ты изучаешь?')
language = input()
print(language, '- отличный выбор!')

22
Приветствие

На вход программе подается строка текста – имя человека. Напишите программу, которая
выводит на экран приветствие в виде слова «Привет» (без кавычек), после которого
должна стоять запятая и пробел, а затем введенное имя.
Формат входных данных
На вход программе подаётся одна строка — имя человека.
Формат выходных данных
Программа должна вывести текст в соответствии с условием задачи.
Примечание. Для считывания текста используйте команду  input() , для печати текста на
экране используйте команду  print() .

Любимая команда

23
На вход программе подается строка текста – название футбольной команды. Напишите
программу, которая повторяет ее на экране со словами « - чемпион!» (без кавычек).

Формат входных данных


На вход программе подается название футбольной команды.

Формат выходных данных


Программа должна вывести текст согласно условиям задачи.

Примечание. Для считывания текста используйте команду  input() , для печати текста на


экране используйте команду  print() .

Тестовые данные 🟢
    Номер теста     Входные данные     Выходные данные

1 Барселона Барселона - чемпион!

2 Ливерпуль Ливерпуль - чемпион!

3 Спартак Спартак - чемпион!

4 Реал Реал - чемпион!

5 Ювентус Ювентус - чемпион!

Sample Input:
Барселона

Sample Output:
Барселона - чемпион!

Повторяй за мной

Напишите программу, которая считывает три строки по очереди, а затем выводит их в той
же последовательности, каждую на отдельной строчке.
24
Формат входных данных
На вход программе подаются три строки, каждая на отдельной строке.

Формат выходных данных


Программа должна вывести введенные строки в той же последовательности, каждую на
отдельной строке.

Примечание. Для считывания текста используйте команду  input() , для печати текста на


экране используйте команду  print() .

Тестовые данные 🟢
    Номер теста     Входные данные     Выходные данные

I was I was
1 born born
this way this way

I love I love
2 Python Python
so much so much

Меня зовут Меня зовут


3 Тимур Тимур
Я люблю математику Я люблю математику

Sample Input 1:
I was
born
this way

Sample Output 1:
I was
born
this way

Sample Input 2:
I love
Python
so much

Sample Output 2:
I love
Python
so much

25
Повторяй за мной 2

Напишите программу, которая считывает три строки по очереди, а затем выводит их


в обратной последовательности, каждую на отдельной строчке.

Формат входных данных


На вход программе подается три строки, каждая на отдельной строке.

Формат выходных данных


Программа должна вывести введенные строки в обратной последовательности, каждую на
отдельной строке.

Примечание. Используйте 3 переменные для сохранения введённых строк текста.

Тестовые данные 🟢
    Номер теста     Входные данные     Выходные данные

Hello me
1 it's it's
me Hello

I love so much
2 Python Python
so much I love

Меня зовут Я люблю математику


3 Тимур Тимур
Я люблю математику Меня зовут

Sample Input 1:
Hello
it's
me

Sample Output 1:

26
me
it's
Hello

Sample Input 2:
I love
Python
so much

Sample Output 2:
so much
Python
I love

27
2.3 Параметры sep и end

Тема урока: sep, end, переменные, PEP 8 

1. Необязательные параметры команды  print() :  sep ,  end


2. Переменные
3. Стандарт PEP 8
4. Комментарии
5. Решение задач

Аннотация. Урок посвящен изучению необязательных параметров команды  print()  и


более детальному разбору понятия переменных. Также мы поговорим о комментариях и
стандарте PEP 8, которого придерживаются Python-программисты.

Необязательные параметры команды print

По умолчанию команда  print()  принимает несколько аргументов (параметров), выводит


их через один пробел, после чего ставит перевод строки. Это поведение можно
изменить, используя необязательные именованные параметры  sep  (separator, разделитель)
и  end  (окончание).

Параметр sep

Рассмотрим следующий код:

print('a', 'b', 'c')

print('d', 'e', 'f')

Результатом выполнения такого кода будет:

abc

def

Рассмотрим следующий код: 

print('a', 'b', 'c', sep='*')

print('d', 'e', 'f', sep='**')

Результатом выполнения такого кода будет:

a*b*c

d**e**f

При первой печати в качестве строки разделителя между


аргументами команды  print()  установлена строка  sep='*' .

При второй печати в качестве строки разделителя между


аргументами команды  print()  установлена строка  sep='**' .

Таким образом, необязательный параметр  sep  команды  print()  позволяет установить


строку, с помощью которой будут разделены аргументы при печати.

28
Параметр end

Если перевод строки делать не нужно или требуется указать специальное окончание, то


следует явно указать значение для параметра  end .

Рассмотрим следующий код:

print('a', 'b', 'c', end='@')

print('d', 'e', 'f', end='@@')

Результатом выполнения такого кода будет:

a b c@d e f@@

По завершении первой печати вставлена строка  @  вместо перевода строки. Аналогично,


по завершении второй печати вставлена строка  @@ .

Параметры  sep  и  end  можно использовать вместе. Рассмотрим следующий код:

print('a', 'b', 'c', sep='*', end='finish')

print('d', 'e', 'f', sep='**', end='^__^')

print('g', 'h', 'i', sep='+', end='%')

print('j', 'k', 'l', sep='-', end='#')

print('m', 'n', 'o', sep='/', end='!')

Результатом выполнения такого кода будет:

a*b*cfinishd**e**f^__^g+h+i%j-k-l#m/n/o!

Примечания

Примечание 1. Вызов команды  print()  с пустыми скобками ставит перевод строки.

Примечание 2. Последовательность символов  \n  называется управляющей


последовательностью и задает перевод строки.

Примечание 3. Значения по умолчанию у параметров  sep  и  end  следующие:

sep=' ' # пробел

end='\n' # перевод строки

Примечание 4. Чтобы убрать все дополнительные выводимые символы, можно вызывать


команду print()  так:

print('a', 'b', 'c', sep='', end='')

Примечание 5. Программный код

print('Python')

29
равнозначен коду

print('Python', end='\n')

 Примечание 6. Если после вывода данных нужно более одного перевода строки, то
необходимо использовать следующий код:

print('Python', end='\n\n\n')

-----------------------------------------------------------------------------------

1. Что будет выведено на экран в результате выполнения следующего кода?

print('31', '12', '2019', sep='-')


Ответ: 31-12-2019

2. Что будет выведено на экран в результате выполнения следующего кода?

print('Mercury', 'Venus', sep='*', end='!')


print('Mars', 'Jupiter', sep='**', end='?')
Решение: Mercury*Venus!Mars**Jupiter?

3. Сколько строк будет распечатано в результате выполнения следующего кода?

print('a', 'b', 'c', sep='*')


print('d', 'e', 'f', sep='**', end='')
print('g', 'h', 'i', sep='+', end='%')
print('j', 'k', 'l', sep='-', end='\n')
print('m', 'n', 'o', sep='/', end='!')
print('p', 'q', 'r', sep='1', end='%')
print('s', 't', 'u', sep='&', end='\n')
print('v', 'w', 'x', sep='%')
print('y', 'z', sep='/', end='!')
Примечание. Последовательность символов \n задает перевод строки.

Ответ: 5.

Четвертый номер:

I like Python
Напишите программу, которая выводит на экран текст «I***like***Python» (без кавычек).
Примечание. Используйте необязательный параметр sep.
Sample Input:
Sample Output:
I***like***Python
Решение:

# put your python code here


print('I','like','Python', sep='***')

30
Пятая задача:

Кастомный разделитель
Напишите программу, которая считывает строку-разделитель и три строки, а затем
выводит указанные строки через разделитель.
Формат входных данных
На вход программе подаётся строка-разделитель и три строки, каждая на отдельной
строке.
Формат выходных данных
Программа должна вывести введённые три строки через разделитель.
Код:

# put your python code here


a=input()
b=input()
c=input()
d=input()
print(b, c, d, sep=a)

Шестая задача:

Приветствие
Напишите программу, которая приветствует пользователя, выводя слово «Привет» (без
кавычек), после которого должна стоять запятая и пробел, а затем введенное
имя и восклицательный знак.
Формат входных данных
На вход программе подаётся одна строка — имя пользователя.
Формат выходных данных
Программа должна вывести текст в соотвествии с условием задачи.
Примечание 1. Перед восклицательным знаком не должно быть пробелов.
Примечание 2. Используйте необязательный параметр end.
Ответ:

name=input()
print('Привет,', name, end='!')
Переменные

В предыдущих упражнениях мы уже использовали переменные, но авторы курса до сих


пор не объясняли, что же это такое и с чем его едят.

Мы знаем, что команда  input()  обозначает «подожди, пока пользователь введет что-
нибудь с клавиатуры, и запомни то, что он ввёл». Просто так просить «запомнить»
довольно бессмысленно: нам ведь потом надо будет как-то сказать компьютеру, чтобы он
вспомнил то, что запомнил. Для этого используем переменные и пишем такой код:

variable_name = input()

print('Вы ввели текст:', variable_name)

31
Данный код означает: «Сохрани то, что ввёл пользователь, в памяти, и дальше это место в
памяти мы будем называть именем  variable_name ». Соответственно,
команда  print(variable_name)  означает: «Посмотри, что лежит в памяти, под
именем  variable_name , и выведи это на экран».

Вот такие «места в памяти» называются переменными. Любая переменная имеет имя и


значение.

Имя переменной

1. В имени переменной используйте только латинские буквы a-z, A-Z, цифры и символ
нижнего подчеркивания (_);
2. Имя переменной не может начинаться с цифры;
3. Имя переменной по возможности должно отражать её назначение.

Запомни: Python — регистрочувствительный язык.


Переменная  name  и  Name  — две совершенно разные переменные. Для именования
переменных принято использовать стиль lower_case_with_underscores (слова
из маленьких букв с подчеркиваниями).

Значение переменной

Значение переменной — сохраненная в ней информация. Это может быть текст, число и
т.д.

Знак «=» это оператор присваивания. Он присваивает значение, которое находится


справа от знака «равно», переменной, которая находится слева от знака «равно».

В нашем случае это то, что поместил в неё пользователь командой  input() . Это текстовое
значение — строка. То есть переменная сохраняет в себе строковое значение. Говорят, что
переменная имеет строковый тип данных.

Запомни: интерпретатор ждет, что пользователь что-то введет с клавиатуры


ровно столько раз, сколько команд  input()  встречается в программе.
Каждый  input()  завершается нажатием Enter на клавиатуре.

Значения переменной, естественно, можно менять (переприсваивать).

print('Как тебя зовут?')

name = input()

print('Привет,', name)

name = 'Timur'

print('Привет,', name)

32
Оператор присваивания сообщает переменной то или иное значение независимо от того,
была ли эта переменная введена раньше. Вы можете менять значение переменной, записав
еще один оператор присваивания. Если у нас имеется переменная, мы можем делать
с её значением все что угодно — например, присвоить другой переменной:

name1 = 'Тимур'

name2 = name1

print(name2)

Итак, если вы хотите, чтобы у вас была переменная с каким-то именем и каким-то


значением, нужно написать на отдельной строчке:

<имя переменной> = <значение переменной>

Как только эта команда выполнится, в программе появится переменная с


указанным значением.

Запомни: название переменной всегда должно быть слева от знака равенства.

Следующий код приведет к ошибке:   'Timur' = name .

Множественное присваивание

В языке Python можно за одну инструкцию присваивания изменять значение сразу


нескольких переменных. Делается это так:

name, surname = 'Timur', 'Guev'

print('Имя:', name, 'Фамилия:', surname)

Этот код можно записать и так:

name = 'Timur'

surname = 'Guev'

print('Имя:', name, 'Фамилия:', surname)

Отличие двух способов состоит в том, что множественное присваивание в первом способе
присваивает значение двум переменным одновременно.

Если требуется считать текст с клавиатуры и присвоить его в качестве значения


переменным, то можно написать так: 

name, surname = input(), input()

print('Имя:', name, 'Фамилия:', surname)

33
Если слева от знака «равно» в множественном присваивании должны стоять через
запятую имена переменных, то справа могут стоять произвольные выражения,
разделённые запятыми. Главное, чтобы слева и справа от знака присваивания было
одинаковое число элементов.

Множественное присваивание удобно использовать, когда нужно обменять значения двух


переменных. В Python это делается так:

name1 = 'Timur'

name2 = 'Gvido'

name1, name2 = name2, name1

Примечания

Примечание 1. Названия переменных ничего не говорят интерпретатору, и даже в очень


хорошо названной переменной не появится нужное значение, если мы сами его туда
не запишем.

Примечание 2. Новое значение переменной вытесняет старое. Важно представлять, чему


равно значение переменной в каждый момент времени.

Примечание 3. Переменные можно вводить в любой момент (не только в самом начале


программы).

Примечание 4. В качестве названия переменных запрещено использовать ключевые


(зарезервированные) слова. К ключевым словам в языке Python относятся:

1. False;
2. True;
3. None;
4. and;
5. with;
6. as;
7. assert;
8. break;
9. class;
10. continue;
11. def;
12. del;
13. elif;
14. else;
15. except;
16. finally;
17. try;
18. for;
19. from;
20. global;
21. if;
22. import;
23. in;
24. is;
25. lambda;
26. nonlocal;
27. not;
28. or;
29. pass;
34
30. raise;
31. return;
32. while;
33. yield.

Пять последних вопросов


7. Какие из имён допустимы для названия переменных в Python?

Ответ: teacher teacher2 teacher_2

8. Что покажет приведенный ниже фрагмент кода?

language = 'Python'
language = 'Pascal'
print(language)
Результат: Pascal

9. Какое значение будет находиться в переменной s1 после выполнения следующего кода?

s1 = 'C++'
s2 = 'Python'
s3 = 'Java'
s3 = s2
s1 = s3
Результат: Python

PEP 8

При оформлении программ мы будем пользоваться PEP 8 — Python Enhanced Proposal.


Этот документ предлагает единый и общепринятый стиль написания программ на языке
Python. Документ создан по рекомендациям Гвидо Ван Россума, автора Python. Прочесть
его на русском языке можно по ссылке.

Некоторые рекомендации PEP 8

Рекомендация 1. Избегайте использования пробелов перед открывающей скобкой, после


которой начинается список аргументов функции.

Правильно:

print('Follow PEP8!')

Неправильно:

print ('Follow PEP8!')

Рекомендация 2. После запятой нужен пробел.

Правильно:

print('PEP8', 'Rocks!')

Неправильно:

print('PEP8','Rocks!')
35
Рекомендация 3. Не отделяйте пробелами знак «равно», когда он употребляется для
обозначения значения параметра по умолчанию.

Правильно:

print('My name', 'is', 'Python', sep='**', end='+')

Неправильно:

print('My name', 'is', 'Python', sep = '**', end = '+')

PEP 8 в Wing IDE

Среда Wing IDE имеет встроенную поддержку форматирования кода по стандарту PEP 8.


Для включения такой возможности в Wing IDE зайдите в меню Edit → Preferences.
Перейдите к категории Editor → PEP 8.

После включения форматирования под стандарт PEP 8, среда Wing IDE автоматически
будет исправлять код, дополняя его пробелами и т.д.

Комментарии

До этого момента всё, что мы набирали в тексте наших программ, представляло собой
команды для компьютера. Но в программу имеет смысл включать также примечания,
описывающие, что она делает и как работает. Это может помочь вам или кому-то другому
понять принцип работы программы спустя некоторое время.

Такие примечания называются комментариями.

Однострочные комментарии

Любую строку можно превратить в комментарий, поместив перед ней символ #.


36
Рассмотрим следующий код:

# Это комментарий в программе на языке Python.

print('Python rocks!')

Если запустить эту программу, то получится:

Python rocks!

Первая строка при запуске игнорируется. Комментарий, начинающийся с символа #,


предназначен только для автора программы и для тех, кто будет читать этот код.

Комментарий в конце строки

Комментарий можно поместить после строки кода.

print('Python rocks!') # Это комментарий в программе на языке Python.

Комментарий начинается после символа #. Все, что находится до этого символа,


представляет собой обычный код. Если запустить эту программу, получится:

Python rocks!

Примечания

Примечание 1. Согласно стандарту PEP 8, комментарии должны отделяться хотя бы


двумя пробелами от кода. Они должны начинаться с символа # и одного пробела.

Правильно:

# Далее будет напечатан текст

print('Comments in Python') # Печать текста с помощью команды print.

Неправильно:

#Далее будет напечатан текст

print('Comments in Python')#Печать текста с помощью команды print.

Примечание 2. При вводе комментариев в среде Wing IDE вы обнаружите, что они
выделяются цветом. Это сделано, чтобы облегчить чтение кода.

10. Выберите строки кода, соответствующие стандарту PEP 8.

Примечание. Будьте внимательны с пробелами.

Ответы:

 print(‘Follow PEP8!’)
 print(‘Follow’, ‘PEP8!’)
 print(‘Follow’, ‘PEP8′, sep=’**’)
 name = input()

37
11. Что будет напечатано в результате выполнения следующей программы?

# print('Java')
# print('Ruby')
# print('Scala')
print('Python', end='+') # print('C++')
# print('GO')
print('C#', end='=') # print('C')
print('awesome')
# finish
Правильный текст: Python+C#=awesome

38

Вам также может понравиться