روزی روزگاری، خدمتکار دانایی بود که جانِ شاهزادهای را نجات داد. پادشاه وعده داد هر آنچه خدمتکار به ذهنش برسد، بپردازد. خدمتکار که میدانست پادشاه عاشق شطرنج است، به پادشاه گفت که دانههای گندم میخواهد. یک دانه روی خانهی اول صفحهی شطرنج و در هر خانهی بعدی، تعداد دانهها دو برابر میشود.
تعداد دانههای گندم روی یک صفحهی شطرنج را محاسبه کنید.
یک صفحهی شطرنج ۶۴ خانه دارد. خانهی ۱ یک دانه دارد، خانهی ۲ دو دانه دارد، خانهی ۳ چهار دانه دارد و به همین ترتیب، هر بار دو برابر میشود.
کدی بنویسید که این موارد را محاسبه کند:
گاهی لازم است یک استثنا ایجاد کنید. وقتی این کار را میکنید، همیشه باید یک پیام خطای معنادار بیاورید تا نشان دهید منبع خطا چیست. این کار خوانایی کد شما را بیشتر میکند و به دیباگ کردن کمک زیادی میکند. در موقعیتهایی که میدانید منبع خطا از یک نوع مشخص است، میتوانید یکی از انواع خطای داخلی را ایجاد کنید، اما در هر صورت باید پیام معناداری هم بیاورید.
این تمرین بهطور خاص میخواهد که از دستور raise استفاده کنید تا وقتی مقدار ورودی خانه خارج از محدوده است، یک ValueError را «پرتاب» کنید. تستها تنها در صورتی موفق میشوند که هم exception را raise کنید و هم پیامی همراه آن بیاورید.
برای raise کردن یک ValueError همراه با پیام، پیام را بهعنوان آرگومان به نوع exception بدهید:
# when the square value is not in the acceptable range
raise ValueError("square must be between 1 and 64")