Арифметические операторы
С большинством мы познакомились в прошлой главе, соберём их вместе и добавим детали:
| Оператор | Операция | Пример |
|---|---|---|
+ - * / | базовая арифметика | 10 / 4 = 2.5 |
// | целочисленное деление | 10 // 4 = 2 |
% | остаток от деления | 10 % 3 = 1 |
** | степень | 2 ** 8 = 256 |
Остаток от деления — неожиданно полезен
Оператор % чаще всего применяют, чтобы проверить чётность
или кратность:
number = 15
if number % 2 == 0:
print("Чётное")
else:
print("Нечётное") # напечатает это
# Кратно ли 10?
if number % 10 == 0:
print("Закруглили")
Ещё одна классическая задача — извлечение цифр числа. Последняя цифра
числа — это number % 10, а число без последней цифры —
number // 10:
n = 1234
print(n % 10) # 4 — последняя цифра
print(n // 10) # 123 — без последней
Операторы сравнения
| Оператор | Значение | Пример (истина) |
|---|---|---|
== | равно | 5 == 5 |
!= | не равно | 5 != 3 |
> < | больше / меньше | 5 > 3 |
>= <= | больше или равно / меньше или равно | 5 >= 5 |
Результат сравнения — bool, поэтому его можно сохранить в
переменную:
is_adult = age >= 18
can_vote = is_adult and has_citizenship
Цепочки сравнений
В Python можно записать сравнение «между» в математической нотации:
score = 75
if 0 <= score <= 100: # эквивалент 0 <= score and score <= 100
print("Корректный балл")
Логические операторы
Три оператора работают с булевыми значениями:
and— «и», истина только если оба операнда истинны.or— «или», истина если хотя бы один истинен.not— «не», инверсия.
age = 20
has_ticket = True
can_enter = (age >= 18) and has_ticket # True
is_vip = has_ticket and (age > 65) # False
is_blocked = not has_ticket # False
Короткое замыкание (short-circuit)
and и or не вычисляют второй операнд, если
результат уже ясен из первого. Это используют для безопасных значений по
умолчанию:
# name будет "Гость", если user_name пустая строка (falsy)
user_name = ""
name = user_name or "Гость"
print(name) # Гость
Приоритет операций
Как в математике: сначала степень, потом умножение/деление, потом сложение. Скобки повышают приоритет — не стесняйтесь их ставить для читаемости:
result = 2 + 3 * 4 # 14 — умножение раньше
result = (2 + 3) * 4 # 20 — скобки изменили порядок
Среди логических операторов not сильнее and,
а and сильнее or:
# not a or b and c == (not a) or (b and c)
Лучшее правило: если есть сомнения — поставьте скобки. Явное лучше неявного.
Составное присваивание
Короткая запись «применить операцию и присвоить обратно»:
total = 100
total += 50 # total = total + 50 -> 150
total -= 20 # 130
total *= 2 # 260
total //= 100 # 2
total **= 3 # 8
Такой же трюк работает со строками и списками:
name = "Анна"
name += "!" # "Анна!"
items = [1, 2]
items += [3, 4] # [1, 2, 3, 4]
f-строки
F-строка (formatted string) — самый удобный способ вставить значения
переменных в текст. Перед кавычкой ставится буква f, а в
фигурных скобках пишется выражение:
name = "Анна"
age = 28
print(f"Меня зовут {name}, мне {age} лет.")
# Меня зовут Анна, мне 28 лет.
Внутри скобок можно писать любые выражения:
price = 199.5
quantity = 3
print(f"Итого: {price * quantity} руб.") # Итого: 598.5 руб.
Форматирование чисел
После значения через двоеточие идут спецификаторы формата:
pi = 3.14159265
print(f"{pi:.2f}") # 3.14 — два знака после запятой
print(f"{pi:.4f}") # 3.1416
print(f"{1000:,}") # 1,000 — разделитель разрядов
print(f"{42:05d}") # 00042 — число с лидирующими нулями
print(f"{0.15:.0%}") # 15% — как проценты
Выравнивание
name = "Анна"
print(f"|{name:10}|") # |Анна | — ширина 10, по левому краю
print(f"|{name:>10}|") # | Анна| — по правому
print(f"|{name:^10}|") # | Анна | — по центру
Старые способы (для распознавания в чужом коде)
До f-строк (Python 3.6) пользовались методом .format() и
оператором %. В новом коде они почти не нужны, но встречаются:
print("Мне {} лет".format(28)) # Мне 28 лет
print("Мне %d лет" % 28) # Мне 28 лет (совсем старый способ)
Методы строк
У строк много готовых методов. Самые ходовые:
text = " Привет, Мир! "
print(text.strip()) # "Привет, Мир!" — убрать пробелы по краям
print(text.lower()) # " привет, мир! "
print(text.upper()) # " ПРИВЕТ, МИР! "
print(text.replace("Мир", "Python")) # замена подстроки
words = "яблоко,банан,груша".split(",")
print(words) # ['яблоко', 'банан', 'груша']
print("-".join(words)) # яблоко-банан-груша
Проверки строк
print("123".isdigit()) # True — только цифры
print("abc".isalpha()) # True — только буквы
print("Hello".isupper()) # False
print("Hello".startswith("He")) # True
Кейс из реального проекта: карточка товара
Представим вывод карточки товара для консольного магазина. Здесь одновременно работают f-строки, форматирование чисел и выравнивание:
title = "Ноутбук Pro 15"
price = 89990.5
discount = 10 # процентов
final_price = price * (1 - discount / 100)
print("=" * 40)
print(f"{title:^40}") # заголовок по центру
print("-" * 40)
print(f"Цена: {price:>12,.2f} руб.")
print(f"Скидка: {discount:>11}%")
print(f"К оплате: {final_price:>12,.2f} руб.")
print("=" * 40)
Вывод:
========================================
Ноутбук Pro 15
----------------------------------------
Цена: 89,990.50 руб.
Скидка: 10%
К оплате: 80,991.45 руб.
========================================
Типичные ошибки
1. Забыли f перед строкой
name = "Анна"
# print("Привет, {name}") # Привет, {name} — без подстановки
print(f"Привет, {name}") # Привет, Анна
2. Использование + вместо f-строки
age = 28
# Плохо: длинно и нужно str()
print("Мне " + str(age) + " лет")
# Хорошо: коротко и читаемо
print(f"Мне {age} лет")
3. Путаница and/or и &/|
& и | — это побитовые операции, для логики
используйте слова and/or:
# Правильно
if age > 18 and has_ticket:
...
# НЕправильно (сработает «случайно» только для конкретных значений)
if age > 18 & has_ticket:
...
Практика
- Дано число секунд. Переведите его в минуты и секунды через
//и%. - Проверьте, делится ли число 2024 на 4, на 100 и на 400 (признак високосного года).
- Напишите f-строку, которая выводит число
3.14159с тремя знаками после запятой. - Дана строка
" Анна,Борис;Вера ". Очистите от пробелов и разбейте на список по запятой или точке с запятой. - Сформируйте «чек» из 3 покупок с форматированием цен через запятую (разделитель тысяч).
Итог
Мы разобрали арифметические, сравнительные и логические операторы, приоритет операций, составное присваивание, f-строки и базовые методы строк. F-строки — главный инструмент форматирования в Python, к нему мы будем возвращаться во всех следующих главах. В следующей главе — управляющие конструкции: условия и циклы.
Комментарии 0
Пока нет комментариев. Станьте первым!