Загрузка данных
def calculate_credit(amount, years):
if amount < 10000:
return "Отказ"
if amount > 1000000:
return "Индивидуально (Сумма)"
if years > 10:
return "Индивидуально (Срок)"
rate = 15
if 100001 <= amount <= 500000:
rate -= 1
elif 500001 <= amount <= 1000000:
rate -= 2
if 3 < years <= 5:
rate += 1
elif 5 < years <= 10:
rate += 2
return rate
def run_task_1():
print("ЗАДАНИЕ 1: КРЕДИТНЫЙ КАЛЬКУЛЯТОР")
print("Классы эквивалентности (Сумма): [0-9999], [10000-100000], [100001-500000], [500001-1000000], [>1000000]")
print("Классы эквивалентности (Срок): [0-3], [3.1-5], [5.1-10], [>10]")
print("Конкретные данные для тестов: 9999, 10000, 100001, 500000, 500001, 1000000, 1000001 руб; 3, 4, 5, 6, 10, 11 лет")
print("-" * 30)
test_cases = [
(9999, 2, "Отказ"),
(10000, 3, 15),
(100001, 3, 14),
(500000, 5, 15),
(500001, 5, 14),
(1000000, 10, 15),
(1000001, 5, "Индивидуально (Сумма)"),
(50000, 11, "Индивидуально (Срок)")
]
for am, yr, exp in test_cases:
res = calculate_credit(am, yr)
print(f"Вход: {am} руб, {yr} лет | Ожидалось: {exp} | Итог: {res} | {'OK' if res == exp else 'FAIL'}")
if __name__ == "__main__":
run_task_1()
def get_billing_status(balance, days_in_month):
daily = 300 / days_in_month
if balance < 0:
return "Приостановка обслуживания"
days_left = balance / daily
if days_left <= 2:
return "Второе предупреждение"
if days_left <= 5:
return "Первое предупреждение"
return "Активен"
def run_task_2():
print("ЗАДАНИЕ 2: ТАРИФ СОТОВОГО ОПЕРАТОРА (АПРЕЛЬ, 30 ДНЕЙ)")
print("Ежесуточное списание: 10 руб.")
print("Классы эквивалентности: Баланс < 0 (Блок), 0 <= Баланс <= 20 (2-е пред.), 20 < Баланс <= 50 (1-е пред.), Баланс > 50 (ОК)")
print("Конкретные данные для тестов: -1, 0, 10, 20, 21, 50, 51")
print("-" * 30)
test_cases = [
(-1, "Приостановка обслуживания"),
(0, "Второе предупреждение"),
(15, "Второе предупреждение"),
(20, "Второе предупреждение"),
(21, "Первое предупреждение"),
(50, "Первое предупреждение"),
(51, "Активен")
]
for bal, exp in test_cases:
res = get_billing_status(bal, 30)
print(f"Баланс: {bal} | Ожидалось: {exp} | Итог: {res} | {'OK' if res == exp else 'FAIL'}")
if __name__ == "__main__":
run_task_2()
def calculate_osago(power, age, exp):
base = 1980
if power <= 50: k_p = 0.6
elif power <= 70: k_p = 1.0
elif power <= 100: k_p = 1.1
elif power <= 120: k_p = 1.2
elif power <= 150: k_p = 1.4
else: k_p = 1.6
if age <= 22:
k_ae = 1.8 if exp <= 3 else 1.6
else:
k_ae = 1.7 if exp <= 3 else 1.0
return round(base * k_p * k_ae, 2)
def run_task_3():
print("ЗАДАНИЕ 3: ОСАГО")
print("Классы Мощность: [<=50], [51-70], [71-100], [101-120], [121-150], [>150]")
print("Классы Возраст/Стаж: [<=22/<=3], [<=22/>3], [>22/<=3], [>22/>3]")
print("Конкретные данные для тестов (границы): (50лс, 22г, 3г), (70лс, 21г, 4г), (100лс, 25г, 2г), (151лс, 30г, 10г)")
print("-" * 30)
test_cases = [
(50, 22, 3, round(1980 * 0.6 * 1.8, 2)),
(70, 21, 5, round(1980 * 1.0 * 1.6, 2)),
(100, 25, 2, round(1980 * 1.1 * 1.7, 2)),
(151, 30, 10, round(1980 * 1.6 * 1.0, 2))
]
for p, a, e, expected in test_cases:
res = calculate_osago(p, a, e)
print(f"Мощность: {p}, Возраст: {a}, Стаж: {e} | Ожидалось: {expected} | Итог: {res} | {'OK' if res == expected else 'FAIL'}")
if __name__ == "__main__":
run_task_3()