تعیین وضعیت نمره در پایتون

آسانشرط

صورت سؤال

برنامه‌ای بنویسید که یک نمره از ۰ تا ۲۰ را بخواند و وضعیت آن را چاپ کند: نمرهٔ ۱۷ و بالاتر «عالی»، از ۱۴ تا کمتر از ۱۷ «خوب»، از ۱۰ تا کمتر از ۱۴ «قبول» و کمتر از ۱۰ «مردود».

نمره ممکن است اعشاری باشد، مثل ۱۶٫۵. اگر نمره کمتر از صفر یا بیشتر از ۲۰ بود، «نمره نامعتبر است» را چاپ کنید.

ورودی نمونه

16.5

خروجی نمونه

خوب

خودتان امتحان کنید

کد را در ویرایشگر زیر کامل کنید و اجرا کنید. ورودی نمونه در کادر ورودی آماده است و بعد از هر اجرا، خروجی شما با خروجی نمونه مقایسه می‌شود.

Ctrl + Enter
خروجی

کد را اجرا کنید تا خروجی آن اینجا نمایش داده شود.

راهنمایی

اول نامعتبر بودن نمره را بررسی کنید. بعد شرط‌ها را از «عالی» به «مردود» بچینید تا هر elif فقط حد پایین خودش را بسنجد.

جواب و توضیح

بهتر است جواب را بعد از امتحان کردن راه خودتان باز کنید.

نمایش جواب
grade = float(input())

if grade < 0 or grade > 20:
    print("نمره نامعتبر است")
elif grade >= 17:
    print("عالی")
elif grade >= 14:
    print("خوب")
elif grade >= 10:
    print("قبول")
else:
    print("مردود")

این جواب چطور کار می‌کند؟

شرط اول نمره‌های بیرون از بازهٔ ۰ تا ۲۰ را جدا می‌کند. با or کافی است یکی از دو حالت درست باشد تا پیام نامعتبر بودن چاپ شود.

بقیهٔ شرط‌ها از بالا به پایین بررسی می‌شوند. وقتی برنامه به elif grade >= 14 می‌رسد، نمره حتماً کمتر از ۱۷ است، وگرنه شرط قبلی اجرا شده بود. برای همین لازم نیست حد بالا را دوباره بنویسید.

برای ورودی ۱۶٫۵، شرط اول و شرط «عالی» نادرست‌اند و شرط grade >= 14 درست است؛ پس «خوب» چاپ می‌شود و شاخه‌های بعدی بررسی نمی‌شوند.

راه دوم: بازه‌ها در یک لیست

grade = float(input())

LEVELS = [(17, "عالی"), (14, "خوب"), (10, "قبول"), (0, "مردود")]

if not 0 <= grade <= 20:
    print("نمره نامعتبر است")
else:
    for minimum, label in LEVELS:
        if grade >= minimum:
            print(label)
            break

وقتی بازه‌ها زیاد می‌شوند یا ممکن است تغییر کنند، نگه داشتن آن‌ها در یک لیست تغییرشان را ساده می‌کند. مقایسهٔ زنجیره‌ای 0 <= grade <= 20 هم شکل کوتاه دو مقایسه با and است.

اشتباه‌های رایج

  • شرط‌ها را از کمترین نمره شروع می‌کنند؛ مثلاً اول grade >= 10 را می‌نویسند و نمرهٔ ۱۹ هم «قبول» می‌شود.
  • به جای elif چند if جدا می‌نویسند و برای یک نمره چند وضعیت چاپ می‌شود.
  • نمرهٔ اعشاری را با int() می‌خوانند و برنامه برای ورودی ۱۶٫۵ خطا می‌دهد.

تمرین بعدی

پایتون را قدم‌به‌قدم یاد بگیرید

این تمرین یکی از تمرین‌های پایتون با جواب دینا کد است. در دورهٔ پایتون از صفر هر مفهوم یک درس کوتاه دارد و تمرین هر درس با چند آزمون پنهان نمره می‌گیرد؛ درس‌های اول رایگان است. برای امتحان کد آزاد هم اجرای آنلاین پایتون در دسترس است.