Загрузка данных
1.
def min_of_two(a, b):
"""Возвращает меньшее из двух чисел."""
return a if a < b else b
# Тестовые вызовы
print(min_of_two(10, 20)) # 10
print(min_of_two(5, 3)) # 3
print(min_of_two(-5, -8)) # -8
print(min_of_two(7, 7)) # 7
2.
def power(base, exponent):
"""Возвращает base ** exponent, используя только умножение."""
if exponent == 0:
return 1
result = 1
for _ in range(abs(exponent)):
result *= base
return result if exponent > 0 else 1 / result
# Тесты
print(power(2, 3)) # 8
print(power(5, 0)) # 1
print(power(4, -2)) # 0.0625
print(power(3, 4)) # 81
3.
def calculate(a, b, operator):
"""Выполняет арифметическое действие над a и b."""
if operator == '+':
return a + b
elif operator == '-':
return a - b
elif operator == '*':
return a * b
elif operator == '/':
if b == 0:
return "Ошибка: деление на ноль"
return a / b
else:
return "Неизвестная операция"
# Тесты
print(calculate(10, 3, '+')) # 13
print(calculate(10, 3, '-')) # 7
print(calculate(10, 3, '*')) # 30
print(calculate(10, 3, '/')) # 3.333...
print(calculate(10, 0, '/')) # Ошибка
4.
def is_prime(n):
"""Возвращает True, если n простое, иначе False."""
if n <= 1:
return False
if n == 2:
return True
if n % 2 == 0:
return False
for i in range(3, int(n**0.5) + 1, 2):
if n % i == 0:
return False
return True
# Тесты
numbers = [1, 2, 3, 4, 17, 18, 29, 100]
for num in numbers:
print(f"{num}: {is_prime(num)}")
5.
def multiplication_table(n):
"""Выводит таблицу умножения для числа n."""
print(f"Таблица умножения для {n}:")
for i in range(1, 11):
print(f"{n} x {i} = {n * i}")
print() # пустая строка
# Вызов для чисел от 2 до 9
for num in range(2, 10):
multiplication_table(num)
6.
def remainder(dividend, divisor):
"""Возвращает остаток от деления dividend на divisor."""
if divisor == 0:
return "Ошибка: деление на ноль"
# Используем целочисленное деление (// запрещён – но мы обойдёмся через int())
quotient = int(dividend / divisor)
return dividend - quotient * divisor
# Тесты
print(remainder(10, 3)) # 1
print(remainder(20, 5)) # 0
print(remainder(7, 2)) # 1
print(remainder(8, 3)) # 2
print(remainder(5, 0)) # ошибка
7.
def sum_numbers(*args):
"""Возвращает сумму переданных чисел (от 1 до 5)."""
if not (1 <= len(args) <= 5):
return "Ошибка: нужно от 1 до 5 аргументов"
return sum(args)
# Тесты
print(sum_numbers(5)) # 5
print(sum_numbers(1, 2, 3)) # 6
print(sum_numbers(10, 20, 30, 40, 50)) # 150
print(sum_numbers(1, 2, 3, 4, 5, 6)) # ошибка (6 аргументов)
8.
def max_of_args(*args):
"""Возвращает максимальное из переданных чисел."""
if not (1 <= len(args) <= 5):
return "Ошибка: нужно от 1 до 5 аргументов"
max_val = args[0]
for num in args[1:]:
if num > max_val:
max_val = num
return max_val
# Тесты
print(max_of_args(42)) # 42
print(max_of_args(5, 12, 3)) # 12
print(max_of_args(100, 200, 50, 75, 300)) # 300
print(max_of_args(1, 2, 3, 4, 5, 6)) # ошибка
9.
def print_parity(start, end, even):
"""Выводит числа в диапазоне [start, end] с нужной чётностью."""
for num in range(start, end + 1):
if even and num % 2 == 0:
print(num, end=" ")
elif not even and num % 2 != 0:
print(num, end=" ")
print() # перевод строки
# Тесты
print("Чётные от 1 до 10:")
print_parity(1, 10, True)
print("Нечётные от 1 до 10:")
print_parity(1, 10, False)
print("Чётные от 5 до 15:")
print_parity(5, 15, True)
10.
def is_leap(year):
"""Возвращает True, если год високосный."""
return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
def next_date(day, month, year):
"""Возвращает дату следующего дня в формате 'дд.мм.гггг'."""
days_in_month = [31, 29 if is_leap(year) else 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31]
day += 1
if day > days_in_month[month - 1]:
day = 1
month += 1
if month > 12:
month = 1
year += 1
return f"{day:02d}.{month:02d}.{year}"
# Тесты
print(next_date(31, 12, 2023)) # 01.01.2024
print(next_date(28, 2, 2023)) # 01.03.2023 (не високосный)
print(next_date(28, 2, 2024)) # 29.02.2024 (високосный)
print(next_date(30, 4, 2025)) # 01.05.2025
print(next_date(15, 8, 2022)) # 16.08.2022