Аннотация
Первый урок посвящен введению в язык Python и знакомству с теми техническими средствами, которые понадобятся для обучения по нашему курсу. Сегодня мы научимся писать программы, которые умеют что-то выводить на экран и считывать информацию с клавиатуры. А также познакомимся с переменными.
1. Введение
Программа — это список команд, то есть инструкций для компьютера:
— отобразить что-нибудь на экране,
— вычислить что-нибудь
— и т. д.
В вашем компьютере много разных программ. Программа-браузер показывает вам страницы в интернете, программа-плеер проигрывает музыку, Word позволяет редактировать тексты, игры развлекают вас, вирусы мешают — и всё это программы. Чтобы создать страницу на сайте в интернете (которую получит и покажет ваш браузер) — например, вашу страничку ВКонтакте, или результаты поиска в Яндексе — компьютер, на котором работает этот сайт, часто тоже выполняет какую-то программу.
Есть разные способы записать программу. Однако наиболее «удобная» для компьютера форма записи в виде машинного кода неудобна для человека. Поэтому для составления программ придумали языки программирования.
Язык программирования
Язык программирования — это набор строгих правил, согласно которым компьютер может «понимать» команды и выполнять их. Текст программы, написанной на любом языке программирования, называется программным кодом или просто кодом.
Языки программирования бывают двух основных типов: компилируемые и интерпретируемые. Если программа написана на компилируемом языке (например, Pascal или C++), то перед выполнением её нужно сначала полностью проверить на некоторые ошибки и перевести в более «понятную» компьютеру форму. Это делает специальная программа — компилятор.
Если программа написана на интерпретируемом языке (например, Java или Python), то она не переводится целиком в машинный код, а специальная программа — интерпретатор идет по тексту программы, анализирует и выполняет каждую отдельную команду. Такой подход придаёт языку особую гибкость, и простоту в написании программ.
Язык Python, который мы сейчас начнем изучать, разработал голландский программист Гвидо Ван Руссум в 1991 году. Не подумайте, что язык назван в честь змеи-питона, Гвидо был большим фанатом британского комедийного сериала «Летающий цирк Монти Пайтона» (англ. Monty Python’s Flying Circus) и именно оттуда пришло название языка. В настоящее время в русском языке для названия языка используют два варианта произношения — «Питон» или «Пайтон».
Python относится к интерпретируемым языкам программирования, чтобы запустить написанную на Python программу, нужен интерпретатор Python (его можно скачать с сайта python.org). Подробнее об установке языка Python смотрите в видеоинструкции к уроку.
2. Знакомство с IDE
Команды для интерпретатора можно писать в обычном текстовом редакторе (например, в Блокноте). Но чаще для этого пользуются специальной программой, которая называется средой разработки (англ. IDE, Integrated Development Environment). Среда разработки — тоже текстовый редактор, но с дополнительными возможностями. Например, она умеет сама находить на компьютере программу-интерпретатор и запускать одной кнопкой. Также среда разработки форматирует написанный вами код, чтобы его удобно было читать, а иногда даже подсказывает, где вы допустили ошибку.
На первом этапе мы будем использовать среду разработки Wing IDE. Её можно скачать с сайта разработчика, фирмы Wingware. В будущем вам может потребоваться более сложная, но и более богатая возможностями среда разработки. В этом случае мы рекомендуем использовать PyCharm, продукт российской фирмы JetBrains.
Ну что же, пора приступать к разработке программ. Для начала, запустите среду разработки WingIDE. И давайте проверим настройки кодировок файлов. Эти настройки потребуются для корректной сдачи программ в тестирующую систему.
— Зайдите в меню «Edit» → «Preferences». Перейдите к категории «Files». Для опции «Default Encoding» выберите значение «Unicode (UTF-8) utf-8».
— Зайдите в меню «Edit» → «Preferences». Перейдите к категории «Debugger» → «I/O». Для опции «Debug I/O Encoding» выберите значение «Unicode (UTF-8) utf-8».
Примечание. На компьютерах с системой Mac OS вместо меню «Edit» необходимо открывать вкладку «Wing 101» или Cmd + «,».
PEP8
При оформлении программ, мы будем пользоваться PEP8 — (Python Enhanced Proposal) — это документ, описывающий общепринятый (рекомендуемый) стиль написания программ на языке Python. Документ создан по рекомендациям Гвидо Ван Руссо и Барри Уорсо, ознакомится с материалами на русском языке можно, например, тут. В наших материалах мы будем отмечать рекомендации PEP8 таким значком.
3. Команда print()
А теперь изучим команду вывода на экран. Для вывода на экран используется команда print().
Важно
Внутри круглых скобок, через запятую мы указываем то, что необходимо вывести на экран. Если это какой-то текст, то указываем его внутри кавычек. Кавычки могут быть как одинарными, так и двойными. Главное, что бы текст начинался и заканчивался кавычками одного типа. Команда print записывается только строчными буквами, другое написание недопустимо, так как в Python строчные и заглавные буквы различны.
Создайте в среде новый файл и напишите в нем команду вывода на экран слова «Привет!». Команда будет выглядеть так:
print('Привет!')
Обратите внимание на цветовую индикацию. Например, в Wing IDE слово print выделено голубым цветом, а слово «Привет» — фиолетовым. В среде Wing IDE используется следующее цветовое выделение синтаксиса: все стандартные команды и функции выделяются синим и голубым цветом, фиолетовым цветом выделяются текстовые данные — строки — заключенные в кавычки.
PEP8
Избегайте использования пробелов cразу перед открывающей скобкой, после которой начинается список аргументов функции.
Правильно:
print('Привет!')
Неправильно:
print ('Привет!')
Настало время запустить нашу первую программу. Но кнопка запуска Run пока не доступна. Перед запуском надо сохранить файл на диск.
Вы будете писать много программ, только за первый год обучения их будет более 500, поэтому для удобства — создавайте для каждого урока свою папку, в которой будете хранить программы этого урока, а сами файлы с программами называйте так, что бы было понятно, о какой задаче идет речь. Назовите данный файл hello и сохраните его. Теперь стала доступна кнопка запуска. Запустите программу.
4. Тестирующая система
Вы только что написали свою первую программу. А сейчас вы сдадите свою первую задачу в тестирующую систему.
Измените свою программу так, что бы она решала задачу «Приветствие». Запустите и проверьте ее. И если она работает верно — сдавайте задание в тестирующую систему. Не забудьте сохранить новую программу в отдельном файле. Сейчас это кажется не очень важным, но потом, когда программ станет больше, а сами они длиннее и сложнее, привычка систематизировать материалы очень вам поможет. Чтобы не путаться код какой программы в каком файле, именем может служить название задачи в тестирующей системе.
Написать или запустить неверную программу — не страшно. Что-то не понять — тоже не страшно. Даже опытные программисты иногда ошибаются и что-то не понимают. Поэтому в случае затруднений всегда смело задавайте вопросы и просите преподавателя вам помочь.
Ваша программа пока умеет только здороваться. Давайте сделаем так, чтобы она выводила две строчки с текстом. В первой строке «Привет, Яндекс!», а на второй — «Приятно познакомиться.» Для этого нам понадобится еще одна команда print. Эту команду нам обязательно надо написать с новой строки. Каждая новая команда пишется с новой строки! Сохраните программу с новым именем acquaintance, запустите и проверьте. И если все правильно — сдавайте задачку «Знакомство» в тестирующую систему.
Когда сдадите задачу, попробуйте внести в свою программу ошибки — добавьте опечатку в слово print, уберите открывающую или закрывающую скобку, придумайте еще что-нибудь необычное. Обратите внимание, что в консоли появляется сообщение, в котором есть слово Error. SyntaxError: invalid syntax часто означает именно забытую кавычку или скобку. Обратите внимание, что если вы добавите опечатку в слово print, то оно становится чёрным: редактор не узнаёт его и не понимает, что это команда.
Давайте теперь немного изменим нашу последнюю программу. Попробуйте заменить строчку print(’Привет, Яндекс!’) на строку print(’Привет’, ’Яндекс!’). Запустите и посмотрите, что будет выведено на экран. В этот раз мы внутри команды print указали две строки, заключенные в кавычки, но разделили эти строки между собой запятой. Как уже говорилось в начале урока, внутри круглых скобок через запятую указывается то, что нужно вывести на экран. В данном случае на экран выводится две строки. Первая — «Привет», вторая — «Яндекс!». Эти строки пишутся в команде print через запятую, а появляются на экране через пробел. То есть, запятая внутри команды заменятся на пробел при выводе на экран.
PEP8
Обратите внимание, что после запятой, согласно стандарту PEP-8, обязательно нужно добавлять пробел.
Правильно:
print('Привет', 'Яндекс!')
Неправильно:
print('Привет','Яндекс!')
Выполнив программу, мы видим, что фраза «Привет Яндекс!» не соответствует требуемой. В ней не хватает запятой. Запятая должна быть выведена на экран, а это значит, что она должна оказаться внутри строки, заключенной в кавычки. Исправьте программу и добейтесь правильного вывода. Самостоятельно разбейте фразу «Приятно познакомиться.» на две строки, которые внутри команды print будут записываться через запятую.
5. Команда input()
Пока что все наши программы выводили на экран фразы, известные в момент написания программы. Но программы могут работать и с данными, которые станут известны только во время выполнения программ, например, их будет вводить пользователь с клавиатуры. Мы можем реализовать это так:
print('Как тебя зовут?') name = input() print('Привет,', name)
Запустите эту программу. Она выводит на экран строчку «Как тебя зовут?» и дальше ждет от пользователя ввода ответа на вопрос, ввода имени.
Введите имя. Запустите ещё раз. Введите чужое имя.
Здесь используется команда input().
Важно
Она всегда пишется с круглыми скобками. Команда работает так: когда программа доходит до места, где есть input(), она ждёт, пока пользователь введёт строку с клавиатуры (ввод завершается нажатием клавиши Enter). Введённая строка подставляется на место input().
То есть, если вы ввели «Аня», то программа дальше будет работать так, как будто на месте input() было написано ’Аня’.
Таким образом, input() получает от пользователя какие-то данные и в место вызова подставляет строковое значение, в нашем случае записывает его в качестве значения переменной name. Мы рассмотрим, что значит сохранить в значение переменной, а пока запомните:
Важно
Если нужно, чтобы программа что-то печатала на экране (и это увидел пользователь) — print. Если нужно, чтобы пользователь что-то напечатал с клавиатуры (чтобы программа могла использовать эти данные) — input().
6. Переменные
Команду name = input() можно считать так — «подожди, пока пользователь введет какую-то строку и помести введенную строку в переменную name».
Попробуем разобраться, что это значит. Переменные имеют имя и значение.
Имя переменной
Имя переменной должно отражать ее назначение и может состоять из латинских букв, цифр и символа подчеркивания.
Имя не может начинаться с цифры.
PEP8
Для именования переменных принято использовать стиль lower_case_with_underscores (слова из маленьких букв с подчеркиваниями).
Избегайте использовать такие символы, которые могут не однозначно трактоваться в различных шрифтах, это буквы о — большая и маленькая и цифра 0, буквы l маленькая, I большая и цифра 1. Также нельзя использовать в качестве имени переменной ключевые слова, которые существуют в языке.
В вышеописанном примере переменная содержит в себе имя пользователя, поэтому мы назвали ее name(имя).
Обратите внимание, что слово name не подсвечено никаким цветом — в Python это слово ничего не обозначает. Оно что-то значит только в этой программе и только потому, что мы употребили оператор присваивания. При этом интерпретатору совершенно неважно, что значит слово name в английском языке, и мы с тем же успехом могли использовать любое другое имя: например, user («пользователь») или просто n, или даже hello. За имена переменных отвечает программист — то есть вы.
Соблюдайте правило: если в переменной хранится приветствие — пусть она так и называется, если имя — пусть она и называется соответственно.
Значение переменной
Значение переменной — это то, что сохраняет в себе переменная.
В нашем случае это то, что поместил в нее пользователь командой input(). Это текстовое значение — строка. То есть переменная сохраняет в себе строковое значение. Говорят, что переменная строкового типа.
Ещё пример:
print('Какая твоя любимая еда?') meal = input() print('Да.', meal, '- это вкусно.')
Обратите внимание: интерпретатор ждет, что пользователь что-то введёт с клавиатуры ровно столько раз, сколько команд input() встречается в программе. Каждый input() завершается нажатием Enter на клавиатуре.
print('Как тебя зовут?') name = input() print('Привет,', name) print('А какая твоя любимая еда?') meal = input() print('Да.', meal, '- это вкусно.')
Мы задали значение переменной, и что же, оно никогда не меняется? Конечно, в двух разных программах могут быть переменные с одинаковыми названиями, но разными значениями. Но могут ли в пределах одной программы под одним именем быть разные значения?
Да! Оператор присваивания сообщает переменной то или иное значение независимо от того, была ли эта переменная введена раньше. Вы можете менять значение переменной, записав еще один оператор присваивания. Если у нас имеется переменная, то мы можем делать с её значением всё что угодно — например, присвоить другой переменной:
hello = 'Здравствуйте.' hello2 = hello
print(hello2)
Важно
Итак, если вы хотите, чтобы у вас была переменная с каким-то именем и каким-то значением, нужно написать на отдельной строчке:
<имя переменной> = <значение переменной>
Как только эта команда выполнится, в программе появится такая переменная с таким значением. Помните: команды выполняются последовательно, в том же порядке, в котором они написаны.
А теперь смоделируем небольшой взлом программы.
Загрузите файл guessing_game.py. Это тоже программа на Python. Для начала просто запустите её (двойным кликом). Как видите, это игра-угадайка. Шанс угадать невелик, у кого получится — тот везучий. Как бы облегчить выигрыш?
Теперь откройте эту программу в редакторе. Это делается не двойным кликом, а кликом правой кнопкой и выбором пункта Edit with Wing IDE (или редактировать с помощью Wing IDE). Смысл некоторых строчек этой программы вы уже знаете. Про другие скоро узнаете или можете догадаться.
Сейчас мы научимся жульничать в игре путём изменения этой программы. Конечно, можно было бы заменить всю программу единственной строчкой — поздравлением с победой. Но мы будем считать, что менять можно только одну строчку — ту, которая сейчас пуста. Мы можем вписать туда любую команду.
Мы знаем, что к тому моменту, когда выполнение программы доходит до пустой строчки, в переменной под названием planet лежит название загаданной планеты. Сделайте так, чтобы в этот момент оно выводилось прямо на экран — тогда игроку останется лишь повторить название для победы (это потребуется вам в задаче «Взлом планетной угадайки»).
7. Трассировка
Задача (для разбора). Предположим, что у нас есть программа, которая входит в интерфейс сайта «Госуслуги» и служит для смены имени. Как будет работать эта программа, что она выведет при каком-либо пользовательском вводе?
print('Введите фамилию:') surname = input() print('Введите имя:') name = input() print(name, surname) print('Введите новое имя:') new_name = input() print(name, surname) print(new_name, name) name = new_name
print(new_name, name) print(name, surname)
Давайте немного изменим программу и посмотрим, что теперь получится.
print('Введите фамилию:') surname = input() print('Введите имя:') name = input() print(name, surname) print('Введите новое имя:') new_name = input() old_name = name
name = new_name
print(new_name, old_name) print(name, surname)
Если вы написали программу, и не уверены, правильно ли вы её написали — разберите, что она делает. Если не уверены, что всё сделали правильно — запустите и проверьте свои рассуждения.
Важно
Для удобства можно использовать комментарии, которые позволяют программисту делать для себя пометки в коде или делать часть кода не выполнимой, невидимой для интерпретатора.
Если вы начнёте строчку со знака решётки #, то интерпретатор Python будет игнорировать всю эту строчку. Программа будет выполняться так, как будто строчки нет. Такая строчка называется комментарием.
Комментарии нужны в двух случаях:
1. Когда нужно добавить в программу какую-то пометку для человека, который будет читать эту программу (например, см. третью строчку guessing_game).
2. Когда нужно убрать какую-то строчку кода, но удалять её не хочется (например, потом её, возможно, понадобится вернуть). Это называется «закомментировать» строчку.
PEP8
«Встрочные» комментарии находятся в той же строке, что и инструкция. Они должны отделяться по крайней мере двумя пробелами от инструкции и начинаться с символа # и одного пробела.
Комментарии в строке с кодом не нужны и только отвлекают от чтения, если они объясняют очевидное.
Правильно:
x = x + 1 # компенсация границы
Неправильно:
x = x + 1 # увеличение на единицу
Если нужно закомментировать сразу несколько строчек подряд, не делайте это вручную. Выделите эти строчки и выберите Source → Toggle block comment (там же можно убрать комментирование).
Заметьте, что в конце guessing_game на отдельной строчке стоит знакомая команда input(). Зачем она нужна?
Ответ: когда запускаешь программу двойным кликом, окно с программой закрывается сразу, как только программа заканчивает работу. Если программа что-то выводит на экран в конце работы, то пользователь этого не увидит. А так программа ждёт, пока пользователь нажмёт клавишу Enter. Конечно, он может что-то ввести, но это неважно — мы всё равно никак не используем этот ввод. Попробуйте закомментировать последнюю строчку guessing_game и запустить программу из Проводника двойным кликом.
Заметьте, что если запустить программу, у которой в конце input(), из редактора Wing IDE, то в конце её работы придётся лишний раз нажать Enter, хотя в этом и нет необходимости.
Попробуйте запустить программу hello или любую другую из своих старых программ двойным кликом — сначала в исходном виде, потом с input() в конце.
Следующая статья - https://dzen.ru/media/id/637a1cf2e1c5d415d43749c7/uslovnyi-operator-637a1f5cbe4db80030062b82