پیش‌نیاز و هدف یادگیری

این بخش، گام 3 از مسیر «پایتون از صفر» است. هدف این درس شناخت ورودی عددی و انتخاب فرمول با یک شرط است. پیش‌نیاز: متغیر و عملگر در پایتون؛ محاسبهٔ یک رسید. کتابخانهٔ خارجی لازم نیست؛ ماژول‌های استاندارد همراه Python 3 هستند. اگر مفهوم قبلی برایتان ناآشناست، ابتدا مقالهٔ پیش‌نیاز را بخوانید و مثالش را اجرا کنید؛ حفظ‌کردن کد جای فهم ورودی و خروجی را نمی‌گیرد.

مفهوم اصلی به زبان ساده

نوع مقدار تعیین می‌کند چه عملی روی آن معنی دارد. جمع دو رشته آن‌ها را به هم می‌چسباند، ولی جمع دو عدد محاسبه می‌کند. داده‌ای که از input می‌آید رشته است؛ اگر قرار است عدد باشد باید آن را با float تبدیل کنید. در این پروژه ورودی JSON از قبل عدد دارد و استفاده از input لازم نیست. کلید unit واحد ورودی را با C یا F مشخص می‌کند.

مسئلهٔ این درس

در پروژهٔ «مبدل دمای سانتی‌گراد و فارنهایت» باید یک تابع مستقل بنویسید. میزکار ورودی نمونه را در request.json قرار می‌دهد؛ تابع solve دیکشنری داده را می‌گیرد و نتیجهٔ خود را برمی‌گرداند. در این قرارداد input لازم نیست و خواندن تعاملی از ترمینال ممکن است اجرای ارزیابی را متوقف کند. از مثال زیر شروع کنید و پیش از اجرای آن، شکل نتیجه را حدس بزنید.

نمونه‌کد قابل اجرا

def solve(data):
    value, unit = data['value'], data['unit']
    if unit == 'C':
        return {'value': round(value * 9 / 5 + 32, 2), 'unit': 'F'}
    if unit == 'F':
        return {'value': round((value - 32) * 5 / 9, 2), 'unit': 'C'}
    return {'error': 'invalid_unit'}

print(solve({'value': 0, 'unit': 'C'}))

نتیجهٔ مورد انتظار

{
  "value": 32,
  "unit": "F"
}

توضیح مرحله‌به‌مرحله

برای تبدیل سانتی‌گراد به فارنهایت، عدد را در ۹ تقسیم بر ۵ ضرب و ۳۲ اضافه می‌کنیم. جهت عکس ابتدا ۳۲ را کم می‌کند و سپس در ۵ تقسیم بر ۹ ضرب می‌کند. شرط if شاخهٔ مناسب را انتخاب می‌کند. در خروجی علاوه بر مقدار، واحد جدید را می‌نویسیم تا عدد بدون معنا باقی نماند. دمای منفی هم ورودی معتبر است.

قرارداد ورودی و خروجی

مثال فقط یک ورودی است، نه همهٔ مسئله. مقدارها را از data بخوانید و جواب نمونه را ثابت در برنامه ننویسید. نام کلیدها، نوع عدد و رشته و ترتیب فهرست‌ها بخشی از قراردادند. در پروژه، بخش پایانی main.py نتیجهٔ تابع را در result.json ذخیره می‌کند؛ آن بخش را نگه دارید. موفقیت اجرای برنامه با درست‌بودن پاسخ و قبولی ارزیابی یکسان نیست.

خطای رایج و راه تشخیص

ترتیب پرانتز در فرمول جهت عکس مهم است: (value - 32) * 5 / 9 با value - 32 * 5 / 9 برابر نیست. اگر واحد ناشناخته باشد، خروجی error=invalid_unit می‌دهیم؛ حدس‌زدن واحد اشتباه نتیجه‌ای ظاهراً معتبر تولید می‌کند.

تمرین مستقل و خودآزمایی

صفر و صد سانتی‌گراد را تبدیل کنید. سپس نتیجه را در جهت عکس تبدیل کنید و ببینید تا دقت دو رقم به ورودی اولیه نزدیک می‌شوید یا نه.

برای هر آزمایش، ورودی، خروجی مورد انتظار و خروجی واقعی را جدا بنویسید. اگر تفاوتی دیدید، یک نمونهٔ کوچک‌تر بسازید و تغییر را دوباره امتحان کنید. به جای اجرای چند تغییر هم‌زمان، هر بار یک فرض را بررسی کنید. پس از فهم نمونه، پروژهٔ مرتبط را در میزکار حل کنید؛ ارزیابی با چند ورودی متفاوت انجام می‌شود و پاسخ ثابت نمونه پذیرفته نخواهد شد.

گام بعدی

موضوع‌های این درس: Types · Arithmetic · Branching. اگر می‌توانید دلیل هر خط را توضیح دهید و ورودی تازه‌ای را بدون دست‌کاری منطق اصلی حل کنید، به مقالهٔ بعدی بروید. هدف مسیر مقدماتی، تسلط بر همین رفتارهای کوچک و قابل آزمایش است؛ برای شروع پروژه‌های یادگیری ماشین عجله نکنید.

منابع و مطالعهٔ بیشتر

برای بررسی جزئیات و ادامهٔ مطالعه؛ متن این راهنما مستقلاً برای نوونتیکس نوشته شده است.