Загрузка данных


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