Ввод, вывод и переменные в python
Первая программа
В прошлой главе мы научились использовать питон для повседневных математических вычислений, вводя команды по одной. Это называется режимом консоли, или интерактивным режимом. Но с увеличением размера программы, писать код по одной строчке становится неудобно, гораздо проще написать программу целиком (или создать скрипт), а затем при необходимости запускать.
Традиционно, первой программой на любом языке программирования становится "Hello, world!". Такая программа просто запускается и говорит миру - "привет!".
Чтобы написать нашу первую программу, зайдите в меню IDLE и смело выбирайте File -> New File
. В появившемся новом пустом окне введите команду:
print("Hello, world!")
Затем нажмите Run -> Run Module
и сохраните ваш файл в удобном для вас месте на диске. Лучше всего сделать отдельную папку для программирования и в ней отдельные подпапки для каждой главы. Результат работы программы появится в основном окне IDLE.
Вау! Ты только что написал свою первую программу! 🥳
Используем print для вывода информации
Для вывода данных в питоне используется команда print
. Как и после любой команды, после print
ставятся круглые скобочки, а в них - аргумент этой команды - строка или число, которые надо вывести.
Одна команда - одна строка. Если на одной строке (одной командой) нужно вывести несколько чисел, строк или переменных, их нужно разделять запятыми.
Код:
print("Можно выводить код на разных строках!")
print("Очень удобно! А еще можно сделать пустую строку...")
print("")
print(100 + 1, "долматинец", " - можно разделять части вывод")
Результат:
Можно выводить код на разных строках!
Очень удобно!
101 долматинец - можно разделять на части вывод
Для тренировки, попробуй написать программу, которая выводит на экран ваше имя и три твоих любимых фильма (или сериала/группы/книги...). Главное, чтобы текст был на разных строках.
Переменные в python
Как вы помните, если мы хотим что-то временно сохранить, нам нужна переменная.
Переменная - это именованный участок оперативной памяти, предназначенный для хранения значения определенного типа (целое число / действительное число / текст...). В прочем, питон сам определяет тип переменной, вам нужно указать только ее имя.
Для создания переменной нужно просто написать ее имя и что-либо в нее положить, для чего используется оператор присваивания (=
).
Код:
name = "Ростислав"
print("Меня зовут ", name, ".")
Результат:
Меня зовут Ростислав.
Названия переменных могут состоять из латинских букв и цифр, а также символа
_
, но не могут начинаться с цифры.
Формально, можно использовать и русские символы, но так обычно не делают. Обрати внимание, в коде выше, чтобы вывести текст, мы выделили его в кавычки, а чтобы переменную - написали ее имя без кавычек.
Кавычки могут быть как "двойными"
, так и 'одинарными'
, главное чтобы в начале и в конце текста стояли одинаковые кавычки.
Используем input для общения с пользователем
Для ввода данных используется команда (а правильней - функция) input
. В качестве аргумента она принимает поясняющий текст, а результат возвращает в виде строки.
Код:
number = input('Сколько котов вы хотите купить? ')
print('Отгружаем вам ', number, "котов!")
Результат:
Сколько котов вы хотите купить? 40
Отгружаем вам 40 котов!
Если ввести нужно числа, а не строку (т.е. проводить с результатами операции, как с числами):, то результат надо преобразовать в число.
Код:
width = int(input('Введите ширину участка: '))
height = int(input('Введите высоту участка: '))
print('Площадь: ', width * height)
Результат:
Введите ширину участка: 20
Введите высоту участка: 5
Площадь: 100
Аналогично с помощью функции str
можно преобразовать число в строку. Но, погодите, зачем это нужно? Что будет, если не использвоать int
? Попробуй запустить вот этот код.
s = input()
print(s * 10)
Результат:
Что произошло?! Ведь 10 на 10 - это 100, а совсем не то, что выдал питон! А если вот так?
s = input()
print(s + 10)
Кажется, мы только что получили нашу первую ошибку времени выполнения. Не пугайся, в работе даже самых опытных программистов это случается постоянно. Главное уметь отлавливать их и исправлять до того, как программа попадет к пользователю.
Текст ошибки может быть очень длинным, но на самом деле пока нам важна только последняя строка TypeError: can only concatenate str (not "int") to str
. Если попробовать перевести ее в переводчике, получится что-то вроде Ошибка типа: можно соединять только str (строки) и str (строки), но не "int" (это целое число).
.
Дело в том, что по-умолчанию питон считает, что мы вводим именно строку. Именно поэтому при умножения десятка повторилась 10 раз, а не умножилась на 10, а при сложении вообще все сломалось. Чтобы работать с введенными данными, как с числами, их нужно превратить в числа.
s = int(input())
print(s + 10)
Теперь все будет работать как задумано. Кстати, а попробуй сложить две строки, будет работать? Для тренировки напиши программу, которая спрашивает у пользователя, как его зовут, а потом здоровается с ним по имени.
Например:
Как вас зовут?
Ростислав
Добрый вечер, Ростислав!
Еще примеры:
Что выводит программа? | Что нужно ввести? |
---|---|
Как вас зовут? Добрый вечер, Инна! | Инна |
Как вас зовут? Добрый вечер, Павел! | Павел |
Доступные операции с переменными
В предыдущей главе мы с вами применяли математические операции к числам, в те же операции мы можем применять к переменным.
a = 10 # теперь в переменной a лежит число 10
b = 20 # а в переменной b лежит число 20
a = a + 5 # a теперь равно 15
a = a + b # a равно 35
a = a - 20 # a равно 15
a = a * 2 # a равно 30
a = b / 2 # a равно 10.0
b = a % 4 # b равно 2, этот оператор возвращает остаток от деления
a = a // 3 # целочисленное деление, а рано 3
b = b ** 3 # возведение в степень, b равно 8
Используя эти операции, а также функции input
и print
, решите задачи, приведенные в этом разделе.
Создаем линейный квест
Кажется, сейчас у нас есть все, чтобы создать линеный квест!
В качестве примера линейного квеста давай сделаем что-то забавное. Попробуй написать программу, которая спрашивает какую-либо информацию про пользователя, а затем рассказывает про него шутку.
Между частями шутки для пущего эффекта можно добавить ожидание нажатия книпки Enter. Для этого можно использовать пустой input()
, достаточно просто вызвать эту функцию не сохраняя результат.
Например...
Кстати, для нагнетения обстановки можно вместо нажатий Enter добавить задержку. Например, персонаж какое-то время пытается открыть дверь или ожидается итог напряженной схватки. Сделать это можно, используя встроенный модуль time
(мы с тобой уже знакомы с модулем math
). Пример его использования ниже.
import time
print("Сейчас будет перерыв 10 секунд.")
time.sleep(10)
print("10 секунд прошло, работаем дальше...")
Попробуй оба варианта, сначала с input(), а потом с задержками. Как только заработает, можно смело хвастаться, что у тебя получился линейный квест! 🥳