Python · Синтаксис · Начальный уровень

Условные операторы

15 задач

Практические упражнения по условным операторам в Python: сравнение чисел, проверка диапазонов, работа со строками, паролями, процентами и базовой логикой if, elif, else.

Как Python принимает решения

#
Программа без выбора была бы скучной — она делала бы одно и то же каждый раз, независимо от того, что вводит пользователь или какие данные получает. Условные операторы решают эту проблему. Они позволяют коду посмотреть на значение и выбрать разный путь в зависимости от того, что он найдёт. Оператор if — главный инструмент для этого. Вот его полная форма: ```python if условие: # выполняется, когда условие True elif другое_условие: # выполняется, когда первое было False, но это — True elif ещё_одно: # elif может быть сколько угодно else: # выполняется, если ничего выше не совпало ``` Двоеточие после каждого условия обязательно — Python воспринимает его как начало блока. Всё внутри блока должно быть с отступом в четыре пробела. Python использует отступы для определения границ блоков, в отличие от языков с фигурными скобками. Python проверяет условия сверху вниз и останавливается на первом, которое является True. Выполняется только одна ветка — все остальные пропускаются. Поэтому порядок важен: ставьте наиболее специфичные проверки первыми. elif и else оба необязательны. Обычный if без ничего после него — вполне корректный код, когда нужно действовать только в одном конкретном случае, а во всех остальных — ничего не делать.

Сравнение значений и комбинирование условий

#
Условие — это любое выражение, которое вычисляется в True или False. Большинство условий — это сравнения, построенные с помощью шести операторов: ```python a == b # True, когда a и b равны a != b # True, когда они различаются a > b # True, когда a строго больше a < b # True, когда a строго меньше a >= b # True, когда a больше или равно a <= b # True, когда a меньше или равно ``` Стоит помнить: == проверяет равенство, тогда как = присваивает значение. Использование одного = внутри условия — синтаксическая ошибка в Python, что на самом деле хорошо: язык делает эту конкретную ошибку невозможной. Когда одного условия недостаточно, их комбинируют с помощью and и or: ```python if age >= 13 and age <= 17: print("Подросток") if score < 0 or score > 100: print("Балл вне диапазона") ``` С and обе стороны должны быть True, чтобы всё условие сработало. С or — достаточно, чтобы хотя бы одна сторона была True. Также можно отрицать условие с помощью not: ```python if not is_admin: print("Доступ запрещён") ``` Python поддерживает цепочечные сравнения, которые читаются естественнее для проверки диапазонов: ```python if 13 <= age <= 17: print("Подросток") ``` Это точный эквивалент age >= 13 and age <= 17, но выглядит ближе к математической записи. Обе формы корректны — используйте ту, которая читается понятнее.

Чтение ввода и распространённые паттерны

#
В этих задачах программа читает что-то от пользователя и принимает решение на основе этого. Весь ввод приходит как строка, поэтому первое, что обычно нужно сделать, — преобразовать его в нужный тип. ```python number = float(input("Введите число: ")) if number > 0: print("Положительное") elif number < 0: print("Отрицательное") else: print("Ноль") ``` Используйте int(), когда нужно целое число, и float(), когда нужно дробное. Если забыть о преобразовании, Python попытается сравнить строку с числом, что приведёт к TypeError во время выполнения — одна из самых распространённых начальных ошибок. Проверка делимости с помощью оператора остатка: ```python n = int(input("Введите число: ")) if n % 2 == 0: print("Чётное") else: print("Нечётное") ``` Оператор % возвращает остаток от целочисленного деления. n % 2 равно 0 для каждого чётного числа и 1 для каждого нечётного. Та же идея масштабируется на любой делитель: n % 3 == 0 проверяет делимость на 3, n % 10 == 0 — кратность десяти. Проверка длины строки или списка с помощью len(): ```python password = input("Введите пароль: ") if len(password) < 6: print("Слишком короткий") else: print("Принято") ``` len() работает со строками, списками и кортежами. Вы будете видеть его постоянно. Защита от деления на ноль: ```python a = float(input("a: ")) b = float(input("b: ")) if b == 0: print("Деление на ноль невозможно") else: print(a / b) ``` Всегда проверяйте делитель перед делением. Если b равно нулю и вы всё равно попытаетесь a / b, Python выбросит ZeroDivisionError и программа упадёт. Паттерн с проверкой if — стандартное решение.

Быстрый справочник: условия

#
**Операторы сравнения** | Оператор | Значение | Пример | |---|---|---| | `==` | равно | `x == 5` | | `!=` | не равно | `x != 0` | | `>` | больше | `age > 18` | | `<` | меньше | `age < 18` | | `>=` | больше или равно | `score >= 60` | | `<=` | меньше или равно | `score <= 100` | **Логические операторы** | Оператор | Результат True когда… | |---|---| | `a and b` | оба `a` и `b` True | | `a or b` | хотя бы один True | | `not a` | `a` является False | **Цепочечные сравнения** ```python # вместо age >= 13 and age <= 17 if 13 <= age <= 17: print('Подросток') if 0 < x < 100: print('В диапазоне') ``` **Истинные и ложные значения** Любое значение можно использовать в `if` без явного сравнения. Python считает **ложными** (`False`): `0`, `0.0`, `''` (пустая строка), `[]`, `{}`, `None`. Всё остальное — **истинное** (`True`). ```python name = input('Введите имя: ') if name: # True когда name не пустой print('Привет,', name) items = [] if not items: # True когда список пустой print('Ничего нет') ``` **Типичные паттерны** ```python # делимость if n % 2 == 0: print('чётное') if n % 3 == 0: print('делится на 3') # проверка диапазона if 0 <= score <= 100: print('корректная оценка') # защита от деления на ноль if b != 0: print(a / b) # преобразование типа перед сравнением n = int(input('Введите число: ')) ```
01

Проверка знака числа.

#

Напишите программу, которая принимает число и выводит, положительное оно, отрицательное или равно нулю.

number = float(input("Введите число: "))
Решение
number = float(input("Введите число: "))

if number > 0:
    print("Число положительное")
elif number < 0:
    print("Число отрицательное")
else:
    print("Число равно нулю")

# или так можно: сначала подготовить сообщение, а потом один раз вывести его
number = float(input("Введите число: "))

if number > 0:
    result = "Число положительное"
elif number < 0:
    result = "Число отрицательное"
else:
    result = "Число равно нулю"

print(result)
02

Возрастная категория.

#

Программа принимает возраст пользователя и выводит: "Ребёнок" (до 12), "Подросток" (13–17), "Взрослый" (18 и старше).

age = int(input("Введите возраст: "))

Решение
age = int(input("Введите возраст: "))

if age <= 12:
    print("Ребёнок")
elif age <= 17:
    print("Подросток")
else:
    print("Взрослый")

# второй вариант: границы можно записать явно
age = int(input("Введите возраст: "))

if age < 13:
    print("Ребёнок")
elif age >= 13 and age <= 17:
    print("Подросток")
else:
    print("Взрослый")
03

Большее из двух чисел.

#

Пользователь вводит два числа. Выведите большее из них. Если они равны — выведите сообщение "Числа равны".

a = float(input("Введите первое число: "))
b = float(input("Введите второе число: "))

Решение
a = float(input("Введите первое число: "))
b = float(input("Введите второе число: "))

if a > b:
    print("Большее число:", a)
elif b > a:
    print("Большее число:", b)
else:
    print("Числа равны")

# или так можно, через переменную result
a = float(input("Введите первое число: "))
b = float(input("Введите второе число: "))

if a == b:
    result = "Числа равны"
elif a > b:
    result = f"Большее число: {a}"
else:
    result = f"Большее число: {b}"

print(result)
04

Температура: холодно, тепло, жарко.

#

Программа принимает температуру и выводит: "Холодно" (меньше 10), "Тепло" (10–24), "Жарко" (25 и больше).

temp = float(input("Введите температуру: "))

Решение
temp = float(input("Введите температуру: "))

if temp < 10:
    print("Холодно")
elif temp <= 24:
    print("Тепло")
else:
    print("Жарко")
05

Проверка чётности числа.

#

Пользователь вводит число. Проверьте, является ли оно чётным.

num = int(input("Введите число: "))

Решение
num = int(input("Введите число: "))

if num % 2 == 0:
    print("Число чётное")
else:
    print("Число нечётное")

# или так можно: сохранить проверку в отдельную переменную
num = int(input("Введите число: "))

is_even = num % 2 == 0

if is_even:
    print("Число чётное")
else:
    print("Число нечётное")
06

Проверка длины пароля.

#

Пользователь вводит пароль. Если длина пароля меньше 6 символов — выведите "Слишком короткий пароль", иначе — "Пароль принят".

password = input("Введите пароль: ")

Решение
password = input("Введите пароль: ")

if len(password) < 6:
    print("Слишком короткий пароль")
else:
    print("Пароль принят")
07

Оценка по шкале A-F.

#

Пользователь вводит оценку от 0 до 100. Выведите: A (90–100), B (80–89), C (70–79), D (60–69), F (меньше 60).

score = int(input("Введите оценку: "))

Решение
score = int(input("Введите оценку: "))

if score >= 90:
    print("A")
elif score >= 80:
    print("B")
elif score >= 70:
    print("C")
elif score >= 60:
    print("D")
else:
    print("F")

# или так можно: идти от меньших границ к большим
score = int(input("Введите оценку: "))

if score < 60:
    print("F")
elif score < 70:
    print("D")
elif score < 80:
    print("C")
elif score < 90:
    print("B")
else:
    print("A")
08

Кратность двух чисел.

#

Пользователь вводит два числа. Проверьте, кратно ли первое число второму.

a = float(input("Введите первое число: "))
b = float(input("Введите второе число: "))

Решение
a = float(input("Введите первое число: "))
b = float(input("Введите второе число: "))

if b == 0:
    print("На ноль делить нельзя")
elif a % b == 0:
    print("Первое число кратно второму")
else:
    print("Первое число не кратно второму")
09

Округление в диапазоне 0-100.

#

Пользователь вводит нецелое число. Если оно больше 100 или меньше 0 — выведите "Только от 0 до 100", иначе округлите его с помощью round до 2 знаков после точки.

num = float(input("Введите число: "))

Решение
num = float(input("Введите число: "))

if num < 0 or num > 100:
    print("Только от 0 до 100")
else:
    print(round(num, 2))

# или так можно: проверку диапазона сохранить в переменную
num = float(input("Введите число: "))

in_range = 0 <= num <= 100

if in_range:
    print(round(num, 2))
else:
    print("Только от 0 до 100")
10

Длинная или короткая строка.

#

Пользователь вводит строку. Если длина строки больше 10 символов — выведите "Длинная строка", иначе — "Короткая строка".

text = input("Введите строку: ")

Решение
text = input("Введите строку: ")

if len(text) > 10:
    print("Длинная строка")
else:
    print("Короткая строка")

# или так можно через переменную message
text = input("Введите строку: ")

if len(text) > 10:
    message = "Длинная строка"
else:
    message = "Короткая строка"

print(message)
11

Процент от числа.

#

Пользователь вводит a и b. Посчитайте сколько процентов a от b. Формула процентов (a/b)*100.

a = float(input("Часть: "))
b = float(input("От целого: "))

Решение
a = float(input("Часть: "))
b = float(input("От целого: "))

if b == 0:
    print("На ноль делить нельзя! И части от 0 нет.")
else:
    result = (a / b) * 100
    result = round(result, 2)
    print(str(result) + "%")

# или так можно: округлить сразу при создании result
a = float(input("Часть: "))
b = float(input("От целого: "))

if b == 0:
    print("На ноль делить нельзя! И части от 0 нет.")
else:
    result = round((a / b) * 100, 2)
    print(str(result) + "%")
12

Округление до нужного знака.

#

Пользователь вводит не целое число, например 5.2564494 и вводит до какого знака после запятой (точки) его округлить. Сделайте рассчеты.

num = float(input("Введите число: "))
rounding = int(input("До какого знака округлять: "))

Решение
num = float(input("Введите число: "))
rounding = int(input("До какого знака округлять: "))

if rounding < 0:
    print("Значение для количсетва знаков после точки не может быть меньше 0.")
    # Хотя если передать в round отрицательное число в параметр до скольки округлять,
    # то результатом округлеия будет просто 0. Так специально сделано, чтоб ошибок не было.
else:
    print(round(num, rounding))
13

Выбор int или float.

#

Пользователь вводит число, проверьте, если в введенном есть точка, то сконверитруйте его во float, если точки нет то в int.

num = input("Введите число: ")

Решение
num = input("Введите число: ")

if "." in num:
    num = float(num)
else:
    num = int(num)

print(num)

# второй вариант: можно проверить и запятую, если пользователь вводит число в таком формате
num = input("Введите число: ")

if "." in num or "," in num:
    num = num.replace(",", ".")
    num = float(num)
else:
    num = int(num)

print(num)
14

Деление без ошибки нуля.

#

Нужно разделить a на b. Если b равняется 0, то выведите сообщение, что на 0 делить нельзя. А если всё ОК, то посчитайте!

a = float(input("Введите число: "))
b = float(input("Введите 2-е число: "))

Решение
a = float(input("Введите число: "))
b = float(input("Введите 2-е число: "))

if b == 0:
    print("На ноль делить нельзя! Даже если очень хочется!")
else:
    print("Результат:", a / b)


# ИЛИ
if b == 0:
    print("На ноль делить нельзя! Даже если очень хочется!")
else:
    result = a / b
    print("Результат:", result)


# ИЛИ
if b == 0:
    print("На ноль делить нельзя! Даже если очень хочется!")
else:
    result = a / b
    print("Результат:", round(result, 2))


# ИЛИ
if b == 0:
    result = "На ноль делить нельзя! Даже если очень хочется!"
else:
    result = round(a / b, 2)

print("Результат:", result)


# ИЛИ другие удобные в данной ситуации варианты, даже так:
if b == 0:
    message = "На ноль делить нельзя! Ошибка операции -"
    result = False
else:
    message = "Результат:"
    result = round(a / b, 2)

print(message, result)
15

Анкета имени и фамилии.

#

Пользователь вводит Имя и потом отдельно Фамиилию. Давайте попробуем сделать так, что если он введет все правильно, то мы объединим его Имя и Фамилию в одну строку (как один объект новый) и выведем на печать в терминал. А если он ошибется и введет в поле "Имя" анкеты сразу и свое Имя и Фамилию, то мы выведем сообщение, что: "Внимательно заполняйте анкету!! Это был последний бланк ахахах)))" и программа завершиться. Подсказки: 1) Там будет пробел в строке, если он введет все сразу. 2) Сначала проверяйте ошибочный вариант, так будет проще и правильнее.

name = input("Введите Имя: ")
last_name = input("Введите Фамилию: ")
Решение
name = input("Введите Имя: ")
last_name = input("Введите Фамилию: ")

if " " in name:
    print("Внимательно заполняйте анкету!! Это был последний бланк ахахах)))")
else:
    full_name = name + " " + last_name
    print(full_name)


# или более предусмотрительно с оператором or:
if " " in name:
    print("Внимательно заполняйте анкету!! Это был последний бланк ахахах)))")
elif name == "" or last_name == "":
    print("Бланк нужно заполнить полностью!! (всё заново пока что)")
else:
    full_name = name + " " + last_name
    print(full_name)