Эта глава заложит основу для понимания ключевых принципов программирования. Если вы уже написали программу с текстом, то в конце этой главы вы сможете не только выводить числа, но и использовать их в простых вычислениях, а также сохранять результаты в переменных для дальнейшей работы.
Готовы узнать больше? Тогда приступим!
Если вы выполнили задания из прошлой главы, то у вас должна быть программа, которая выводит в консоль текст.
Теперь давайте разберём этот код подробнее, чтобы понять, как он работает и что означают его составляющие.
В этой программе вы использовали функцию print. Её название происходит от английского слова "печать". Однако в данном случае ничего не печатается на бумаге. Эта команда выводит текст (или другую информацию) на экран в консоль, то есть в строку вывода.
Скобки после слова print
Они указывают, что print — это функция, которую нужно выполнить. Как только интерпретатор Python встречает print, он немедленно вызывает эту функцию. Внутрь скобок передают аргумент – это то, с чем работает функция.
Текст в кавычках
Всё, что находится внутри кавычек, называется строкой. Это именно та информация, которую print должен вывести на экран.
Текст в Python можно записывать разными способами, используя три вида кавычек:
Двойные кавычки: "Пример текста"
Одинарные кавычки: 'Пример текста'
Тройные кавычки: """Пример текста"""
Попробуйте заменить кавычки в своей программе, чтобы лучше понять их работу.
В процессе изучения этой главы вы, как начинающий программист, можете сталкиваться с различными ошибками. Программирование — это не только творчество, но и строгое следование правилам синтаксиса и оформления кода. Как говорится, если что-то не работает, в 99% случаев причина в том, что где-то закралась ошибка.
Для вашего удобства возможные ошибки будут выделены в отдельной главе, а в этой главе будут ссылки на конкретные примеры. Если вы запускаете программу и что-то идёт не так, попробуйте сначала разобраться самостоятельно: проверьте код, подумайте, где могла произойти ошибка. Если не получилось, обратитесь к разделу с описанием ошибок.
Со временем вы научитесь не только находить ошибки, но и избегать их. Это станет частью вашего опыта, и вы сможете писать код, который ломается всё реже. Ошибки — это нормальная часть процесса обучения, поэтому не бойтесь экспериментировать!
Это еще не все, что может выполнять print. Есть также возможность выводить подряд несколько данных, форматировать текст и использовать символы переноса и другие. Но об этом дальше в этой главе.
Создайте программу "about-me.py".
С помощью команды print сделайте так, чтобы при запуске программа выводила информацию о вас:
В первой строке выведите ваше имя или псевдоним
Во второй строке напишите ваш возраст
С третьей по пятую строки напишите несколько строк о себе: кем работаете/где учитесь, ваше хобби и любимую еду.
В шестой строке напишите "Конец программы"
Используйте в программе разные кавычки и их сочетания.
Во многих программах, будь то игра, веб-сайт или приложение, пользователю необходимо видеть информацию, которая может меняться. Например, имя пользователя при регистрации, настройки фильтров или количество товаров в корзине.
Однако для того, чтобы эту информацию можно было запоминать и использовать позднее, её необходимо где-то хранить.
Когда вы покидаете программу или сайт, данные сохраняются в физической памяти — на жёстком диске компьютера или сервера. Но как программа различает, что относится к имени пользователя, а что — к паролю? Ответ прост: с помощью переменных.
– Переменные – это как в математике?
– Ну, в целом да, как в математике.
– А в чем разница?
– В программировании можно хранить не только цифры. :)
В Python, как и в любом ЯП (а также и в математике) существует понятие переменной.
Определение звучит так: переменная — это именованное место в памяти компьютера, предназначенное для хранения данных.
Проще говоря, переменная позволяет вам сохранить какое-либо значение (например, число, текст) и использовать его в своей программе. Вы можете представить её как «подписанную ячейку» в памяти компьютера, где хранится ваша информация.
Слева нарисовано условное представление памяти в компьютере. Каждая "ячейка" – это область, в которую можно запомнить какую-то информацию.
Например сейчас, там в двух ячейках есть число 2024 и строка "hello". Вопрос, как достать оттуда эту информацию?
Способ примерно такой: создать в программе переменную, которая бы ссылалась или указывала на эту информацию.
Напрямую в Python невозможно указать место в памяти, ведь python не может взаимодействовать напрямую с системой (а какой язык может? Попробуйте вспомнить, эта информация была в уроке 0), но может сделать ссылку на объект в этой памяти. (Расскажу почему так, когда дойдем до списков).
Создание переменной в Python — это простой процесс:
Напишите имя переменной. Оно должно быть понятным и отражать смысл данных, которые вы сохраняете.
Используйте знак равенства =. Это называется оператором присваивания и означает, что вы даёте переменной значение.
Укажите значение, которое нужно сохранить.
Попробуйте повторить код с картинки слева и запустите, если не понимаете, что он делает.
– А почему нельзя просто использовать значения напрямую?
– Конечно, вы можете. Но представьте, что вы написали программу, где год 2024 используется 100 раз. Что произойдёт в следующем году, когда вам нужно будет обновить год на 2025?
Если вы использовали число 2024 напрямую, вам придётся заменить его 100 раз.
Если вы сохранили год в переменную, достаточно изменить значение переменной один раз — и оно обновится во всех местах программы.
year = 2024
print(f"Сейчас {year} год.")
# В следующем году достаточно изменить:
year = 2025
Вы уже познакомились с командой print, которая выводит данные на экран. Давайте разберём дополнительные возможности работы с переменными:
Перечисление через запятую.
Если нужно вывести сразу несколько значений, разделите их запятой.
Форматированные строки (f-строки).
Это удобный способ красиво встроить данные из переменных в текст. Используйте букву f перед строкой и заключите имена переменных в фигурные скобки {}.
Перепишите код к себе в программу. Что он выведет? Попробуйте поменять значения переменных и посмотрите на результат
Если коротко - старайтесь писать такие имена, чтобы было сразу понятно, что там содержится. Вот несколько правил:
Переменные в Python могут содержать буквы (a-z, A-Z), цифры (0-9) и подчёркивания (_), но не могут начинаться с цифры.
DO: user_name, profile1, menu_item3
DON'T: 1user, 3_menu
Python учитывает регистр букв, поэтому переменные Age, age, и AGE будут восприниматься как три разные переменные.
Не используйте имена, уже зарезервированные в Python, например, print, list, str. Это может вызвать ошибки или неожиданные результаты.
Имена переменных должны быть понятными и описательными. Они должны передавать смысл без необходимости изучать остальной код.
DO: salary, total_price, elapsed_time
DON'T: s, tp, et
Принято использовать стиль snake_case для переменных, где слова разделяются нижними подчёркиваниями. Можно и в других стилях, ошибки не будет, но
DO: record_count, total_expense, _index
NOT RECOMMENDED: recordCount (camelCase), RecordCount (PascalCase)
DON'T: record сount, record-count
Для констант (переменных, которые не меняются) используются заглавные буквы и подчёркивания.
DO: MAX_SIZE, DEFAULT_COLOR
Хотя использование переменных, как i, j, k для счётчиков в циклах допустимо и является общепринятым, для других переменных лучше выбирать более описательные имена. Если задача - тренировочная и не имеет много строк кода, то можно использовать и однобуквенные имена. Особенно, если задача - математическая.
Эти правила именования помогут вам написать более читаемый, поддерживаемый и безопасный код на Python.
Создайте копию пердыдущей программы "about-me.py" и назовите "about-me2.py".
Отредактируйте её таким образом, чтобы ваше имя и возраст лежали в отельных переменных. Создайте и другие переменные и дополните информацию о себе (ведь хобби, например, могут измениться). Используйте f-строки и вывод нескольких значений.
В Python любое значение, с которым работает программа, относится к определённому типу данных. Тип данных определяет, как интерпретируется значение и что с ним можно делать. Например, число 2024, строка "hello" и число 15.23 — это значения, но они принадлежат разным типам данных.
Python поддерживает множество типов данных, но в этой главе мы рассмотрим три базовых: int, float и str. Позже вы познакомитесь с более сложными типами.
Тип данных int (сокращение от integer) используется для представления целых чисел. Это числа без десятичных дробей, включая отрицательные и ноль.
В отличие от некоторых языков, где существуют разные виды целых чисел (например, в зависимости от их размера), в Python есть только один универсальный тип для всех целых чисел.
Чтобы сделать ваш код более читаемым, добавляйте комментарии. Всё, что написано после символа #, игнорируется интерпретатором.
Тип данных float представляет числа с десятичной дробью, включая целые числа, записанные в таком формате. Например, -12.0 и 3.14 — это значения типа float.
💡 Обратите внимание: В качестве десятичного разделителя используется точка, а не запятая.
Тип данных str используется для представления текста. Строка может содержать буквы, цифры, пробелы, знаки препинания и даже специальные символы.
Строки, содержащие переменные или выражения внутри {}, также относятся к типу str.
Если вы не знаете, какого типа указано значение переменной, интерпретатор может подсказать вам. Для этого используйте функцию type()
Если вы хотите быстро протестировать команды или функции, вы можете работать прямо в консоли Python. Однако учтите, что код в консоли не сохраняется после закрытия. Используйте консоль для экспериментов, а результаты сохраняйте в файлах для длительной работы.
Иногда возникает необходимость преобразовать значение из одного типа данных в другой. Python предлагает простые функции для изменения типа:
int() — преобразует в целое число.
float() — преобразует в число с плавающей точкой.
str() — преобразует в строку.
💡 Обратите внимание: учитывайте порядок выполнения операций, как в математике. Самые вложенные функции выполняются первыми
– В целом, про типы пока что все. Упражнение будет после раздела "Ввод" :)
На этом этапе вы уже знаете, как программа может выводить данные, как работают переменные и типы данных. Теперь пора разобраться, как выполнять операции с данными с помощью операторов.
Оператор — это по сути функция, только записанная в более компактной форме. Например, оператор присваивания = или логический оператор and. В отличие от обычных функций, операторы не требуют использования скобок. Они могут быть записаны с помощью символов (+, -, =) или слов (например, and, or, not).
Python поддерживает стандартные математические операции:
💡 Обратите внимание: математические операции можно выполнять только с числами (int и float). Если вы попробуете использовать эти операторы с другими типами данных (например, строками), это приведёт к ошибке.
Операторы можно использовать в выражениях, где участвуют переменные, значения или функции.
Если оператор используется вне контекста (без переменных или значений), программа просто ничего не сделает.
Попробуйте написать такую программу. Какой будет результат? Какой тип данных получится на выходе?
При написании выражений в Python вы часто сталкиваетесь с ситуацией, когда в одной строке оказывается сразу несколько операций. Например:
result = 2 + 3 * 4
Здесь очевиден вопрос: что же сначала будет вычислено — сложение или умножение? Ответ на этот вопрос определяется таблицей приоритетов операций (операторы с более высоким приоритетом выполняются прежде тех, у которых приоритет ниже).
Операции умножения, деления и их вариации в Python имеют более высокий приоритет, чем операции сложения и вычитания. Поэтому в примере выше сначала будет выполнено 3 * 4, а затем результат умножения сложится с 2, то есть итог: 2 + 12 = 14.
Для упрощения можно представить операции, упорядоченные «сверху вниз», от самых «настойчивых» до наименее приоритетных:
( ) – Скобки: самое главное!
** – Возведение в степень
*, /, //, % – Умножение, деление, целочисленное деление, остаток
+, - – Сложение, вычитание
… – И так далее, включая операторы сравнения, логические операторы and/or, и оператор присваивания
Естественно, это упрощённая схема. Фактически у Python более сложная иерархия приоритетов, в которую входят и логические операции (and, or, not), и операции сравнения, и другие конструкции. Тем не менее, данная схема даёт базовое понимание порядка, в котором Python «читает» ваше выражение.
Создайте файл taxes.py
В этой программе нужно решить следующую задачу:
Компания получила доход в размере 10000 у.е., но также понесла расходы, в размере 4000 у.е. Налог фиксирован и составляет 23%. Нужно вычислить:
Сколько останется чистого дохода после вычета расходов и уплаты налога.
Налог рассчитывается как процент от оставшейся суммы после вычета расходов.
Без скобок вычисления будут некорректными, поэтому их обязательно нужно использовать.
Python предоставляет три интересных оператора, которые могут быть новыми для вас
** – Возводит число в указанную степень.
% – Вычисляет остаток от деления одного числа на другое.
// – Делит два числа и возвращает только целую часть результата, отбрасывая дробную.
Эти операторы удобны для работы с числами, особенно если вам нужно выполнить специфические математические вычисления.
Создайте файл apples.py
В этой программе нужно решить следующую задачу:
В детском саду на каждого ребенка выдаются яблоки. Всего в группе 12 детей, а в саду - 7 групп. В детский сад было привезено 127 яблок. Все, что останется, распределяется между воспитателями. Нужно написать программу, которая считает, сколько яблок достанется каждому ребенку, и сколько останется для воспитателей.
Все данные из задачи запишите в переменные. Количество групп и детей в них запишите как константы.
– А можно ли использовать операторы на строках?
– Да, но только два: умножение и сложение. В случае с умножением, можно умножить строку на число, а вот складывать можно только строки. В случае со строками + обозначает конкатенацию(соединение строк)
В Python два оператора можно использовать с строками:
Сложение (+)
Оператор + выполняет конкатенацию строк — объединяет их в одну строку.
Конкатенацией называют действие, которое склеивает между собой структуры (как правило, строки).
Умножение (*)
Умножение строки на число повторяет её указанное количество раз.
💡 Обратите внимание: строку можно умножать только на целое число, потому что в python продумали момент, что умножение на целое число N – это все равно что сложить строку N раз
До этого момента мы изучали, как выполнять операции в программе и выводить результаты. Но вы, возможно, заметили, что это охватывает только две из трёх частей программы: выполнение и вывод.
Теперь пора рассмотреть ввод данных, чтобы сделать ваши программы более интерактивными.
Для получения данных от пользователя в Python используется функция input(). Она запрашивает ввод с клавиатуры и возвращает введённые пользователем данные.
Обычно введённые данные сохраняют в переменную. Это позволяет программе запомнить введённое значение для дальнейшего использования.
Если input() используется без переменной, то данные, введённые пользователем, никак не сохраняются. Такой подход можно применить, например, для паузы в программе.
Текст в скобках input("Как вас зовут? ") выводится перед строкой ввода, чтобы подсказать пользователю, что от него требуется.
Если текст не указан (input()), программа просто ждёт ввода, без пояснений.
Вот важный момент: все данные, введённые через input, интерпретируются как строка. Даже если пользователь вводит число, Python будет считать это текстом.
Если вы попробуете сложить введённое число с другим числом, это вызовет ошибку.
Чтобы работать с числовыми данными, нужно преобразовать строку в число. Это делается с помощью функций преобразования типов: int() для целых чисел и float() для чисел с плавающей точкой.
💡 Обратите внимание: если пользователь введёт что-то не числовое (например, буквы), программа вызовет ошибку. Для предотвращения таких ошибок позже мы изучим, как обрабатывать исключения.
Теперь вы можете делать программы более интересными и интерактивными. Вот пример простой программы, которая спрашивает имя и возраст пользователя, а затем выводит персонализированное сообщение:
name = input("Как вас зовут? ")
age = int(input("Сколько вам лет? "))
print(f"Приятно познакомиться, {name}! Через 5 лет вам будет {age + 5}.")
Создайте файл "about-me3.py".
Напишите универсальную программу, которая бы спрашивала имя пользователя, его год рождения и его увлечения. Сделайте так, будто это генератор приветственного письма (например, на сайте знакомств). Возраст должен высчитываться автоматически, в зависимости от текущего года.
Будет хорошо, если программа сначала поприветствует пользователя и сначала объяснит, что после ввода данных нужно нажать Enter. Также будет неплохо добавить разделители между разными частями программы.
Сделайте так, чтобы программа не закрывалась сразу после составления письма.
Проявите в этом упражнении фантазию. Возможно, вам не будет хватать некоторых возможностей программирования, таких как условия или циклы, но даже если вы их уже знаете - не нужно их использовать.
Мы разобрали три ключевых аспекта программирования: ввод, вывод и типы данных. Вот основные моменты, которые вам нужно запомнить:
Вывод данных
Для вывода информации на экран используется функция print(). Она может выводить строки, числа и результаты выражений.
С помощью f-строк вы можете легко комбинировать текст и переменные для создания информативного вывода.
Ввод данных
Для ввода информации от пользователя используется функция input().
Она всегда возвращает данные в виде строки.
Чтобы сохранить введённое значение для дальнейшей работы, используйте переменные.
Если вводятся числа, их нужно преобразовать в соответствующий тип данных (int() или float()).
Типы данных
Значения в Python имеют разные типы данных, определяющие, как с ними можно работать.
Базовые типы:
int — целые числа (например, 2024).
float — числа с плавающей точкой (например, 3.14).
str — строки (например, "Привет").
Все данные, введённые через input(), изначально имеют тип str.
💡 Чтобы проверить тип данных переменной, используйте функцию type().
Преобразование типов
Иногда нужно менять тип данных, чтобы программа могла корректно обрабатывать значения.
int() — преобразует строку в целое число.
float() — преобразует строку в число с плавающей точкой.
str() — преобразует значение (например, число) в строку.
Изучив эти основы, вы получили фундаментальные знания, которые позволят создавать более сложные программы. Следующий шаг — изучение операторов, условий и циклов, которые помогут вам научиться принимать решения в программах.