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

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

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

مقدار بولی فقط دو حالت درست و نادرست دارد. all زمانی درست است که همهٔ شرط‌ها برقرار باشند و any با برقرارشدن دست‌کم یک شرط درست می‌شود. این الگو برای کنترل فرم‌ها و قواعد متن مفید است. در این تمرین یک رشتهٔ ساختگی را از نظر طول، حرف بزرگ، حرف کوچک و رقم بررسی می‌کنیم؛ هیچ رمز واقعی وارد نکنید.

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

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

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

def solve(data):
    text = data['text']
    checks = {'length': len(text) >= 8, 'upper': any(c.isupper() for c in text), 'lower': any(c.islower() for c in text), 'digit': any(c.isdigit() for c in text)}
    return {'checks': checks, 'valid': all(checks.values())}

print(solve({'text': 'Abcdef12'}))

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

{
  "checks": {
    "length": true,
    "upper": true,
    "lower": true,
    "digit": true
  },
  "valid": true
}

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

چهار قاعده را در دیکشنری checks نگه می‌داریم. برای وجود رقم، روی نویسه‌ها پیمایش می‌کنیم و نتیجهٔ isdigit را به any می‌دهیم. سپس all روی مقدارهای checks نتیجهٔ کلی را می‌سازد. نگه‌داشتن نتیجهٔ تک‌تک قواعد نشان می‌دهد کدام شرط شکست خورده، در حالی که یک جواب بله یا خیر چنین توضیحی ندارد.

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

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

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

این فقط تمرین منطق است و سنجش امنیت رمز عبور نیست. طول هشت نویسه یا داشتن حرف بزرگ، امنیت واقعی را تضمین نمی‌کند. در محصول واقعی به ذخیره‌سازی امن، محدودیت تلاش و بررسی رمزهای رایج هم نیاز است؛ متن ورودی را نباید در گزارش‌ها ذخیره کرد.

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

برای رشته‌های ساختگی Abcdef12 و abc و ABCD1234 نتیجهٔ هر قاعده را جدا پیش‌بینی کنید. بررسی کنید isdigit بعضی رقم‌های غیراَسکی را هم رقم می‌شناسد.

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

گام بعدی

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

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

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