Модуль 5: Функції

Створення та виклик функцій

📖 Теорія
Функція — іменований блок коду, який можна викликати багаторазово.

Навіщо потрібні функції:
• Уникаємо повторення коду (принцип DRY — Don't Repeat Yourself)
• Розбиваємо програму на логічні частини
• Спрощуємо налагодження та підтримку

Синтаксис:
def ім'я_функції(параметри):
# тіло функції
return результат

Параметри vs аргументи:
• Параметри — у визначенні функції (def)
• Аргументи — при виклику функції

Значення за замовчуванням дозволяють робити параметри необов'язковими.
💡 Приклад коду
Вивід:

                        
📝 ЗАВДАННЯ (3)
1.
Завдання 1: Функції для калькулятора
10 XP
Напишіть 4 функції: add(a, b), subtract(a, b), multiply(a, b), divide(a, b). У divide додайте захист від ділення на нуль (повернути None і вивести попередження). Протестуйте всі функції.
💡 Підказка: Використовуйте if b == 0: у функції divide
🔓 Розв'язок:
def add(a, b): return a + b
def subtract(a, b): return a - b
def multiply(a, b): return a * b
def divide(a, b):
    if b == 0:
        print('Помилка: ділення на нуль')
        return None
    return a / b

print(add(10, 5))
print(subtract(10, 5))
print(multiply(10, 5))
print(divide(10, 5))
print(divide(10, 0))
Вивід:

                                

2.
Завдання 2: Конвертер температур
20 XP
Напишіть дві функції: celsius_to_fahrenheit(c) та fahrenheit_to_celsius(f). Кожна приймає число і повертає результат. Запитайте у користувача температуру та напрямок конвертації (C->F або F->C), виведіть результат.
💡 Підказка: Формули: F = C * 9/5 + 32 та C = (F - 32) * 5/9. Використовуйте if/else для вибору напрямку.
🔓 Розв'язок:
def celsius_to_fahrenheit(c):
    return c * 9 / 5 + 32

def fahrenheit_to_celsius(f):
    return (f - 32) * 5 / 9

temp = float(input('Введіть температуру: '))
direction = input('Напрямок (1 = C->F, 2 = F->C): ')
if direction == '1':
    result = celsius_to_fahrenheit(temp)
    print(f'{temp} C = {result:.1f} F')
elif direction == '2':
    result = fahrenheit_to_celsius(temp)
    print(f'{temp} F = {result:.1f} C')
else:
    print('Невірний вибір')
Вивід:

                                

3.
Завдання 3: Генератор паролів
30 XP
Напишіть функцію generate_password(length=8, use_digits=True, use_special=False), яка генерує випадковий пароль. Параметри за замовчуванням роблять виклик зручним. Згенеруйте 3 паролі з різними налаштуваннями.
💡 Підказка: Використовуйте import random та random.choice(). Створіть рядок допустимих символів із літер + (цифри якщо use_digits) + (спецсимволи якщо use_special).
🔓 Розв'язок:
import random
import string

def generate_password(length=8, use_digits=True, use_special=False):
    chars = string.ascii_letters
    if use_digits:
        chars += string.digits
    if use_special:
        chars += '!@#$%&*'
    password = ''
    for i in range(length):
        password += random.choice(chars)
    return password

print('Простий:', generate_password())
print('Довгий:', generate_password(12))
print('Складний:', generate_password(16, True, True))
Вивід: