Ввод, вывод и переменные в 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(), а потом с задержками. Как только заработает, можно смело хвастаться, что у тебя получился линейный квест! 🥳