Арифметика и три деления
Считать Python умеет сразу, без всякой подготовки. Знаки те же, что в школе, и ещё три своих.
2 + 3 сложение
7 - 2 вычитание
4 * 5 умножение
9 / 2 деление
9 // 2 целочисленное деление
9 % 2 остаток
2 ** 10 степень
print(2 + 3)
print(4 * 5)
print(2 ** 10)5 20 1024
Порядок действий обычный: сначала степень, потом умножение и деление, потом сложение и вычитание. Скобки меняют порядок, как в математике.
print(2 + 3 * 4)
print((2 + 3) * 4)14 20
Три деления — то, чего нет в школьной записи, и то, что пригодится в каждом втором задании.
Обычное деление / всегда даёт дробь — даже когда делится нацело. 10 / 2 это 5.0, с точкой.
Целочисленное // отбрасывает дробную часть: 17 // 5 это 3. Так считают, сколько коробок понадобится и сколько полных минут прошло.
Остаток % берёт то, что не поместилось: 17 % 5 это 2. Так узнают, чётное ли число (n % 2 == 0) и делится ли одно на другое.
print(10 / 2)
print(17 // 5)
print(17 % 5)5.0 3 2
Целые и дробные
Чисел в Python два вида. Целые (int) — без дробной части: 5, −3, 1000. Дробные (float) — с точкой: 5.0, 3.4, −0.5.
Узнать тип можно прямо в программе:
print(type(5))
print(type(5.0))
print(type("5"))<class 'int'> <class 'float'> <class 'str'>
Третья строка — не число вовсе. «5» в кавычках — это текст, и складывать его с числами нельзя.
Превращают одно в другое явно:
print(int("42") + 1)
print(float("2.5") * 2)
print(str(42) + "!")43 5.0 42!
int() из дробного числа отбрасывает дробную часть, а не округляет:
print(int(3.9))
print(int(-3.9))
print(round(3.9))3 -3 4
Округляет round. Разница важная: int(3.9) это 3, round(3.9) это 4.
Порядок действий
Порядок действий тот же, что в математике, и ошибки в нём — самые обидные: программа работает, а число неверное.
1. ** степень
2. * / // % умножение и деления
3. + - сложение и вычитание
print(2 + 3 * 4)
print(2 * 3 ** 2)
print(10 - 4 - 3)14 18 3
Третья строка показывает ещё одно правило: при равном старшинстве считают слева направо. 10 - 4 - 3 это (10 - 4) - 3 = 3, а не 10 - (4 - 3) = 9.
Скобки ставят не только когда нужно поменять порядок, но и когда так понятнее. Это не лишняя работа — это забота о том, кто будет читать:
итог = цена * штук - скидка работает
итог = (цена * штук) - скидка понятно
Средняя арифметическая — классическое место, где скобки обязательны:
а = 4
б = 6
print(а + б / 2)
print((а + б) / 2)7.0 5.0
Первая строка посчитала «а плюс половину б» — не то, что задумано.
Число рядом с текстом
Напечатать число рядом с текстом можно тремя способами, и у каждого своё место.
итог = 1250
print("Итого:", итог, "рублей")Итого: 1250 рублей
Через запятую — самый простой. Пробелы Python ставит сам. Годится почти всегда.
итог = 1250
print("Итого: " + str(итог) + " рублей")Итого: 1250 рублей
Склейкой — когда пробелы не нужны или нужны свои. Число обязательно превратить в текст через str(), иначе TypeError.
итог = 1250
print(f"Итого: {итог} рублей")Итого: 1250 рублей
f-строка — буква f перед кавычками, и всё, что в фигурных скобках, подставляется. Это самый читаемый способ, и в новом коде пишут почти всегда его.
В фигурных скобках может стоять не только имя, но и выражение:
цена = 500
штук = 3
print(f"Всего: {цена * штук} ₽")Всего: 1500 ₽
И формат: две цифры после точки, разделители тысяч.
доля = 0.38461
print(f"{доля:.2f}")
print(f"{1234567:,}")0.38 1,234,567