در حال بارگذاری...

خودتان خطا بسازید

تا این‌جا ایست از خودِ خط می‌آمد: یا تقسیم بر صفر، یا نامی که مقداری نگرفته بود. raise راه دیگری است. ایست را خودتان در برنامه می‌نویسید، نامش را خودتان برمی‌گزینید و یک پیام کوتاه کنار آن می‌گذارید.

ایست را خودتان می‌نویسید، پس water اجرا نمی‌شود

python
raise ValueError("empty")
print("water")

برنامه همان‌جا، روی raise، می‌ایستد. صفحه ValueError را نشان می‌دهد و کلمهٔ empty را. print("water") به اجرا نمی‌رسد. تقسیمی در کار نیست. این ایست را خودِ raise ساخته، نه یک حساب.

صفر فنجان وارد if می‌شود و ایست می‌سازد

python
cups = 0
if cups < 1:
    raise ValueError("empty")
print("water")

این برنامه از نو است. cups صفر است. صفر از یک کوچک‌تر است، پس برنامه وارد if می‌شود و raise اجرا می‌شود. صفحه باز همان ایست است: ValueError و کلمهٔ empty. water نوشته نمی‌شود. این‌جا کسی ایست را نمی‌گیرد، برای همین برنامه همان‌جا تمام می‌شود.

سه فنجان raise را کنار می‌گذارد و water را می‌نویسد

python
cups = 3
if cups < 1:
    raise ValueError("empty")
print("water")

این یکی هم از نو شروع می‌شود. cups این‌بار ۳ است. سه از یک کوچک‌تر نیست، پس اصلاً وارد if نمی‌شود. raise اجرا نمی‌شود. صفحه فقط water را می‌نویسد و ایستی پیش نمی‌آید.

خط raise زیر if تورفته است و همین تورفتگی آن را داخل if می‌گذارد. print("water") تورفته نیست. اگر raise اجرا شود، برنامه ایستاده و نوبت به water نمی‌رسد. اگر if رد شود، water اجرا می‌شود.

نامی که کنار raise نوشته‌اید ValueError است، نه ZeroDivisionError. ZeroDivisionError مال تقسیم بر صفر بود. این‌جا تعداد فنجان به درد نمی‌خورد، پس نام ایست ValueError است. اگر بعدها این ایست را بگیرید، except باید همان ValueError را بگوید. except ZeroDivisionError این یکی را نمی‌گیرد. چنین گرفتنی در برنامه‌های این صفحه نیست. آنچه داخل نقل‌قول است پیام است. empty را خودتان گذاشته‌اید تا کنار نام دیده شود. Python آنجا None نمی‌گذارد.

صفحهٔ بعد فایل‌هاست. این صفحه فقط ساختن ایست را نشان می‌دهد و فایلی باز نمی‌کند.

فنجان و ایستی که نوشتید

برنامهٔ اول روی raise می‌ایستد و water نوشته نمی‌شود. با cups صفر، if وارد می‌شود و همان ایست پیش می‌آید. با cups برابر ۳، raise اجرا نمی‌شود و صفحه water را می‌نویسد. نام این ایست ValueError است. صفحهٔ بعد فایل‌هاست.

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

❓
4
سوالات
🎯
70%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود