✅ Решения и разбор

⚡ Кратко

  • Тесты: b, c, b, b, b, b, a.
  • Возрастная категория — цепочка if-elif-else с верхними границами.
  • Сортировка — сравнения или sorted().
  • Високосный год — логическое выражение с and/or.
  • Математическое округление — math.floor/math.ceil по знаку.
  • Гипотенуза — math.sqrt(a**2 + b**2).

🧩 Ответы на тестовые вопросы

Вопрос 1

Ответ: b) x больше 5, но меньше или равно 15.

Разбор: x = 10, условие x > 15 ложно, x > 5 истинно, поэтому выполняется ветка elif.

Вопрос 2

Ответ: c) обе строки.

Разбор: это два независимых if, а не if-elif. Оба условия истинны, оба блока выполняются.

Вопрос 3

Ответ: b) Нечётное.

Разбор: 7 % 2 == 0 ложно, поэтому выбирается значение после else.

Вопрос 4

Ответ: b) Это целое число.

Разбор: case int() сопоставляет значение с типом int. 10 — целое число.

Вопрос 5

Ответ: b) 4.

Разбор: round(3.5) округляет до ближайшего чётного. 4 чётное.

Вопрос 6

Ответ: b) False.

Разбор: 0.1 + 0.2 в двоичном виде даёт 0.30000000000000004, поэтому равенство не выполняется.

Вопрос 7

Ответ: a) True.

Разбор: Decimal('0.1') хранит число в десятичном виде точно, поэтому сумма равна Decimal('0.3').

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

📄 solutions/age_category.py
age = int(input("Введите ваш возраст: "))

if age <= 2:
    category = "Младенец"
elif age <= 12:
    category = "Ребёнок"
elif age <= 17:
    category = "Подросток"
else:
    category = "Взрослый"

print(f"Категория: {category}.")
💡 Логика: условия проверяются по порядку. Если возраст не <= 2, проверяем <= 12 и так далее. Благодаря этому не нужно писать двусторонние диапазоны.

Задание 2. Сортировка трёх чисел (ручной способ)

📄 solutions/sort_three_manual.py
a = int(input("Первое число: "))
b = int(input("Второе число: "))
c = int(input("Третье число: "))

if a > b:
    a, b = b, a
if b > c:
    b, c = c, b
if a > b:
    a, b = b, a

print(f"{a}, {b}, {c}")
💡 Логика: после первого сравнения a <= b, после второго b <= c, но a могло стать больше нового b, поэтому нужно третье сравнение.

Задание 2. Альтернативное решение через sorted()

📄 solutions/sort_three_builtin.py
a = int(input("Первое число: "))
b = int(input("Второе число: "))
c = int(input("Третье число: "))

result = sorted([a, b, c])
print(", ".join(str(n) for n in result))

Задание 3. Високосный год

📄 solutions/leap_year.py
year = int(input("Введите год: "))

is_leap = (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)

if is_leap:
    print(f"{year} год является високосным.")
else:
    print(f"{year} год не является високосным.")
💡 Логика: основное правило — год делится на 4, но не на 100. Исключение — год делится на 400. Скобки улучшают читаемость, хотя приоритет and выше or.

Задание 4. Математическое округление

📄 solutions/math_rounding.py
import math

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

fraction = abs(x - int(x))

if x >= 0:
    result = math.ceil(x) if fraction >= 0.5 else math.floor(x)
else:
    result = math.floor(x) if fraction >= 0.5 else math.ceil(x)

print(f"Округленное значение: {result}")
💡 Логика: для положительных чисел 0.5 округляем вверх через ceil, меньше 0.5 — вниз через floor. Для отрицательных чисел «вверх от нуля» тоже даёт floor.

Задание 5. Гипотенуза

📄 solutions/hypotenuse.py
import math

a = float(input("Введите длину первого катета: "))
b = float(input("Введите длину второго катета: "))

hypotenuse = math.sqrt(a ** 2 + b ** 2)
print(f"Длина гипотенузы: {hypotenuse}")
💡 Логика: по теореме Пифагора c = sqrt(a² + b²). Модуль math даёт точное и понятное решение.