توابع در پایتون

توابع در پایتون

FUNCTION PYTHON
آموزش مقدماتی پایتون

توابع در پایتون

# ساختار کلی تعریف تابع در پایتون
def function_name(parameters):
    # بدنه تابع
    return output
# تعریف تابع
def show_welcome_message():
    print("========================================")
    print("به سیستم پردازش و تحلیل داده خوش آمدید!")
    print("نسخه سیستم: v1.0.0")
    print("========================================")

# فراخوانی تابع برای اجرا
show_welcome_message()
# تعریف تابع با دو ورودی length و width
def calculate_rectangle_area(length, width):
    area = length * width
    return area  # برگرداندن حاصل ضرب به عنوان نتیجه

# فراخوانی تابع و ذخیره مقدار برگشتی در یک متغیر
room_length = 12
room_width = 8
total_area = calculate_rectangle_area(room_length, room_width)

print("مساحت اتاق:", total_area)  # خروجی: 96

def celsius_to_fahrenheit(celsius: float) -> float:
    """
    این تابع دمای دریافت شده بر حسب سلسیوس را به فارنهایت تبدیل می‌کند.

    فرمول: (Celsius * 9/5) + 32

    پارامترها:
        celsius (float): مقدار عددی دما به سلسیوس

    خروجی:
        float: مقدار معادل دما به فارنهایت
    """
    fahrenheit = (celsius * 9 / 5) + 32
    return fahrenheit

# استفاده از تابع
temp_c = 37.0
temp_f = celsius_to_fahrenheit(temp_c)
print(f"دمای {temp_c} سلسیوس برابر است با {temp_f} فارنهایت.")

# فراخوانی مستندات تابع در پایتون
print("\n--- مشاهده راهنمای تابع ---")
help(celsius_to_fahrenheit)

def calculate_bmi(weight: float, height: float) -> float:
    # ۱. بررسی نوع داده‌ها
    if not isinstance(weight, (int, float)) or not isinstance(height, (int, float)):
        raise TypeError("خطا: وزن و قد باید مقادیر عددی (int یا float) باشند!")

    # ۲. بررسی منطق مقادیر
    if height <= 0:
        raise ValueError("خطا: قد باید عددی مثبت و بزرگتر از صفر باشد!")

    # ۳. محاسبه فرمول BMI: وزن تقسیم بر مجذور قد
    bmi = weight / (height ** 2)
    return round(bmi, 2)

# اجرای درست
patient_bmi = calculate_bmi(75.5, 1.80)
print("شاخص BMI:", patient_bmi)

# مثال از تولید خطا در صورت ورودی نامعتبر (در صورت خارج کردن از کامنت):
# calculate_bmi("75", 1.80)  # باعث ایجاد TypeError می‌شود

def register_patient(patient_name: str, age: int, ward: str = "اورژانس") -> str:
    return f"بیمار {patient_name} ({age} ساله) در بخش '{ward}' پذیرش شد."

# ۱. فراخوانی بدون وارد کردن بخش (استفاده از مقدار پیش‌فرض)
print(register_patient("سارا محمدی", 28))

# ۲. فراخوانی با تغییر مقدار بخش
print(register_patient("علی کریمی", 45, ward="قلب و عروق"))

def setup_connection(host: str, port: int, protocol: str) -> str:
    return f"اتصال به {protocol}://{host}:{port} با موفقیت تنظیم شد."

# روش اول: ترتیبی (Positional) - پایتون داده‌ها را بر اساس مکان می‌شناسد
config1 = setup_connection("localhost", 5432, "postgresql")
print("روش ترتیبی:", config1)

# روش دوم: کلیدواژه‌ای (Keyword) - ترتیب به هم ریخته ولی نام‌ها مشخص است
config2 = setup_connection(protocol="https", host="api.server.com", port=443)
print("روش کلیدواژه‌ای:", config2)

def calculate_drug_dosage(
    weight_kg: float,
    base_dose_per_kg: float = 2.5,
    is_pediatric: bool = False
) -> float:
    """
    محاسبه دوز نهایی داروی تجویزی بر اساس مشخصات بیمار.

    پارامترها:
        weight_kg (float): وزن بیمار به کیلوگرم
        base_dose_per_kg (float, optional): دوز مصرفی به ازای هر کیلوگرم (پیش‌فرض: 2.5 میلی‌گرم)
        is_pediatric (bool, optional): آیا بیمار کودک است؟ (پیش‌فرض: False)

    خروجی:
        float: دوز نهایی دارو به میلی‌گرم

    خطاها:
        TypeError: در صورت ارسال نوع داده نامعتبر
        ValueError: در صورت منفی یا صفر بودن وزن
    """
    # ۱. بررسی نوع داده‌ها (Type Checking)
    if not isinstance(weight_kg, (int, float)) or not isinstance(base_dose_per_kg, (int, float)):
        raise TypeError("وزن و دوز پایه باید مقادیر عددی باشند.")
    
    if not isinstance(is_pediatric, bool):
        raise TypeError("پارامتر is_pediatric باید از نوع بولین (True یا False) باشد.")

    # ۲. بررسی مقادیر منطقی
    if weight_kg <= 0 or base_dose_per_kg <= 0:
        raise ValueError("وزن و دوز پایه باید اعدادی مثبت و بزرگتر از صفر باشند.")

    # ۳. منطق محاسبه
    total_dose = weight_kg * base_dose_per_kg

    # اگر بیمار کودک باشد، دوز دارو نصف محاسبه می‌شود
    if is_pediatric:
        total_dose *= 0.5

    return round(total_dose, 2)


# ==========================================
# بخش اجرای برنامه و آزمایش سناریوهای مختلف
# ==========================================

# ۱. فراخوانی با مقادیر پیش‌فرض (فقط وزن ارسال می‌شود)
dose_adult = calculate_drug_dosage(70.0)
print(f"دوز داروی بزرگسال (۷۰ کیلو): {dose_adult} میلی‌گرم")

# ۲. فراخوانی با پارامترهای کلیدواژه‌ای (Keyword Arguments) برای بیمار کودک
dose_child = calculate_drug_dosage(
    weight_kg=20.0,
    base_dose_per_kg=3.0,
    is_pediatric=True
)
print(f"دوز داروی کودک (۲۰ کیلو): {dose_child} میلی‌گرم")

# ۳. نمایش مستندات کامل تابع با help
print("\n--- مستندات آموزشی تابع ---")
help(calculate_drug_dosage)

فکر خود را اینجا بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *