Урок 3. Ввод, вывод и арифметика
Почти каждая программа что-то получает и что-то выдаёт. В этом уроке — вывод на экран функцией print, ввод с клавиатуры функцией input и вычисления с числами.
Вывод: print
В print можно передать несколько значений через запятую — они выведутся в одну строку через пробел. Настройки sep и end меняют разделитель между значениями и окончание строки:
print("Сумма:", 2 + 3)
print(1, 2, 3)
print(1, 2, 3, sep=", ")
print("без перевода строки", end=" ")
print("— продолжение")
print()
print("после пустой строки")Сумма: 5
1 2 3
1, 2, 3
без перевода строки — продолжение
после пустой строкиsep— что ставить между значениями (по умолчанию пробел);end— чем закончить вывод (по умолчанию переход на новую строку). Сend=" "следующийprintпродолжит ту же строку;- пустой
print()выводит пустую строку.
Ввод: input
input() ждёт, пока человек наберёт строку и нажмёт Enter, и возвращает набранное:
name = input()
print("Привет,", name)АняПривет, АняВ примерах на этом сайте то, что набирают на клавиатуре, показано в блоке «Ввод», а то, что выводит программа, — в блоке «Вывод».
В скобках input можно написать подсказку. Она выводится перед вводом, без перехода на новую строку:
name = input("Как вас зовут? ")
print("Привет,", name)На экране это выглядит так (имя набрано с клавиатуры):
Как вас зовут? Аня
Привет, АняЧисла с клавиатуры
Главное, что нужно запомнить про input: он всегда возвращает строку. Даже если набрать 5, программа получит текст "5". Если сложить два таких ввода, они склеятся: "2" + "3" даст "23". Поэтому ввод сразу переводят в число:
a = int(input())
b = int(input())
print(a + b)2
35int(input()) читает строку и превращает её в целое число, float(input()) — в дробное. Дробную часть при вводе отделяют точкой: 2.5. Если набрать запятую или буквы, программа остановится с ошибкой ValueError — что с этим делать, рассказано в справке input возвращает строку: как ввести число. Как прочитать два числа из одной строки, например 2 3, — в справке Как ввести несколько чисел в одной строке.
Арифметика
| Знак | Действие | Пример | Результат |
|---|---|---|---|
+ | сложение | 7 + 2 | 9 |
- | вычитание | 7 - 2 | 5 |
* | умножение | 7 * 2 | 14 |
/ | деление | 7 / 2 | 3.5 |
// | целочисленное деление | 7 // 2 | 3 |
% | остаток от деления | 7 % 2 | 1 |
** | возведение в степень | 7 ** 2 | 49 |
print(7 / 2)
print(6 / 2)
print(7 // 2)
print(7 % 2)
print(2 ** 10)
print(2 + 3 * 4)
print((2 + 3) * 4)3.5
3.0
3
1
1024
14
20/всегда даёт дробное число, даже если делится нацело:6 / 2— это3.0.//делит и отбрасывает дробную часть,%даёт остаток. В Pascal этоdivиmod, но с отрицательными числами результаты различаются — подробно в справке Деление в Python: /, // и %.- Порядок действий как в математике: сначала
**, потом*,/,//,%, потом+и-. Скобки меняют порядок.
Остаток от деления нужен очень часто: n % 2 == 0 — проверка на чётность, n % 10 — последняя цифра числа, n // 10 — число без последней цифры.
Сокращённая запись
Изменить переменную на какое-то число можно короче:
score = 10
score += 5
score *= 2
score -= 1
print(score)29score += 5 значит то же, что score = score + 5. Так же работают -=, *=, /=, //=, %=. Записи x++, знакомой по другим языкам, в Python нет.
Модуль math и полезные функции
Часть функций есть сразу: abs (модуль числа), round (округление), max и min. Остальные математические функции лежат в модуле math. Модуль здесь — не модуль числа, а готовый набор функций. Его подключают строкой import math в начале программы:
import math
print(math.sqrt(16))
print(math.pi)
print(abs(-5))
print(round(3.14159, 2))
print(max(3, 8, 1), min(3, 8, 1))4.0
3.141592653589793
5
3.14
8 1Дробные числа неточны
print(0.1 + 0.2)0.30000000000000004Это не ошибка Python: компьютер хранит дробные числа в двоичном виде, и большинство десятичных дробей записывается в нём лишь приближённо. Для расчётов это почти никогда не важно, а для вывода число округляют. Как вывести ровно два знака после запятой — в справке f-строки и форматирование вывода.
Из-за этой неточности дробные числа не сравнивают через ==: 0.1 + 0.2 == 0.3 даёт False. Сравнивают с допуском, например функцией math.isclose.
Пример: секунды в минуты
total = int(input())
minutes = total // 60
seconds = total % 60
print(minutes, "мин", seconds, "с")1352 мин 15 сКоротко
print(a, b)выводит через пробел;sep=меняет разделитель,end=— окончание строки.input()всегда возвращает строку; для чисел —int(input())иfloat(input())./— деление с дробным результатом,//— нацело,%— остаток,**— степень.x += 1— короткая записьx = x + 1;x++в Python нет.0.1 + 0.2не равно ровно0.3: дробные числа хранятся приближённо.