پرحرف

پرحرف

آسان

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

مسائل کلامی ساده‌ی ریاضی را تجزیه و ارزیابی کنید و پاسخ را به‌صورت یک عدد صحیح برگردانید.

تکرار ۰: عدد

مسائلی که هیچ عملیاتی ندارند، صرفاً به همان عدد داده‌شده ارزیابی می‌شوند.

What is 5?

به ۵ ارزیابی می‌شود.

تکرار ۱: جمع

دو عدد را با هم جمع کنید.

What is 5 plus 13?

به ۱۸ ارزیابی می‌شود.

اعداد بزرگ و اعداد منفی را هم مدیریت کنید.

تکرار ۲: تفریق، ضرب و تقسیم

حالا سه عملیات دیگر را انجام دهید.

What is 7 minus 5?

۲

What is 6 multiplied by 4?

۲۴

What is 25 divided by 5?

۵

تکرار ۳: چندین عملیات

مجموعه‌ای از عملیات را به ترتیب انجام دهید.

از آنجا که این‌ها مسائل کلامی‌اند، عبارت را از چپ به راست ارزیابی کنید و ترتیب معمول عملیات را نادیده بگیرید.

What is 5 plus 13 plus 6?

۲۴

What is 3 plus 2 multiplied by 3?

۱۵ (یعنی نه ۹)

تکرار ۴: خطاها

تجزیه‌گر باید این موارد را رد کند:

  • عملیات‌های پشتیبانی‌نشده («What is 52 cubed?»)
  • پرسش‌های غیرریاضی («Who is the President of the United States»)
  • مسائل کلامی با نحوه‌ی نگارش نامعتبر («What is 1 plus plus 2?»)

پیام‌های استثنا

گاهی لازم است یک استثنا ایجاد کنید. وقتی این کار را می‌کنید، همیشه باید یک پیام خطای معنادار را هم بیاورید تا نشان دهید منبع خطا چیست. این کار کد شما را خواناتر می‌کند و کمک زیادی به Debug می‌کند. در موقعیت‌هایی که می‌دانید منبع خطا از نوع مشخصی است، می‌توانید یکی از انواع خطای داخلی را ایجاد کنید، اما همچنان باید پیام معناداری را هم بیاورید.

این تمرین به‌طور خاص می‌خواهد که اگر پرسش داده‌شده به answer() بدشکل یا نامعتبر باشد، یا عملیات ناشناخته‌ای داشته باشد، با دستور raise یک ValueError را «پرتاب» کنید. آزمون‌ها تنها زمانی قبول می‌شوند که هم exception را raise کنید و هم پیامی همراه آن بیاورید. توجه کنید: پیام لازم برای هر سناریو متفاوت است، حتی اگر همان نوع خطا ایجاد شود. آزمون‌ها را با دقت بررسی کنید.

برای ایجاد یک ValueError همراه با پیام، پیام را به‌عنوان آرگومانی برای نوع exception بنویسید:

# if the question contains an unknown operation.
raise ValueError("unknown operation")

# if the question is malformed or invalid.
raise ValueError("syntax error")

برای رسیدگی به یک خطای ایجادشده درون یک بلوک کد مشخص، می‌توان از یک try-except استفاده کرد. بلوک‌های try-except کدی را که ممکن است خطا ایجاد کند «در بر می‌گیرند» و همه‌ی استثناها را به یک خطا، چند خطا، یا بخش‌های دیگری از کد نگاشت می‌کنند تا مشکل را حل کنند:

while len(equation) > 1:
        try:
           # The questionable/error-prone code goes here,in an indented block
           # It can contain statements, loops, if-else blocks, or other executable code.
           x_value, operation, y_value, *rest = equation
           ...
           ...

        except:
            # Code for what to do when an error gets thrown in the code above.
            # This could be one error, or more complicated logging, error checking and messaging.
            raise ValueError("syntax error")
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Python Exercism

آماده‌اید پرحرف را شروع کنید؟

در Exercism ثبت‌نام کنید تا Python را همراه با 17 مفهوم146 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.