با دو سطل با اندازههای متفاوت و این که ابتدا کدام سطل پر شود، تعیین کنید که با انتقال سنجیدهی مایع بین سطلها، برای اندازهگیری مقدار دقیقی از لیتر به چند عمل نیاز است.
چند قاعده وجود دارد که راهحل شما باید از آنها پیروی کند:
برنامهی شما این موارد را به عنوان ورودی میگیرد:
برنامهی شما باید اینها را تعیین کند:
نکته: هر بار که در یکی از سطلها یا هر دو تغییری داده شود، یک (۱) عمل به شمار میآید.
مثال: سطل اول میتواند تا ۷ لیتر را در خود نگه دارد و سطل دوم تا ۱۱ لیتر. فرض کنید در گامی مشخص، سطل اول ۷ لیتر و سطل دوم ۸ لیتر دارد (۷،۸). اگر سطل اول را خالی کنید و سطل دوم را تغییر ندهید، به طوری که به ترتیب ۰ لیتر و ۸ لیتر باقی بماند (۰،۸)، این یک عمل به شمار میآید. در عوض، اگر از سطل اول در سطل دوم ریخته باشید تا سطل دوم پر شود، به طوری که نتیجه ۴ لیتر در سطل اول و ۱۱ لیتر در سطل دوم باشد (۴،۱۱)، آن هم فقط یک عمل به شمار میآید.
مثال دیگر: سطل اول میتواند ۳ لیتر را در خود نگه دارد و سطل دوم تا ۵ لیتر. به شما گفته میشود که باید با سطل اول شروع کنید. بنابراین اولین عمل شما پر کردن سطل اول است. برای عمل دوم تصمیم میگیرید سطل اول را خالی کنید. برای عمل سوم، نمیتوانید سطل دوم را پر کنید، چون این کار قاعدهی سوم را نقض میکند: پس از هیچ عملی نباید به وضعیتی برسید که سطل شروع خالی و سطل دیگر پر باشد.
نوشتهشده با <3 در Fullstack Academy توسط Lindsay Levine.
گاهی لازم است یک استثنا ایجاد کنید. هر وقت این کار را میکنید، باید همیشه یک پیام خطای معنادار بنویسید تا مشخص شود منشأ خطا چیست. این کار کد شما را خواناتر میکند و در اشکالزدایی کمک بزرگی میکند. در موقعیتهایی که میدانید منشأ خطا از یک نوع مشخص است، میتوانید یکی از انواع خطای توکار را ایجاد کنید، اما باز هم باید پیامی معنادار همراه آن بنویسید.
این تمرین خاص از شما میخواهد که با دستور raise یک ValueError را «پرتاب» کنید. آزمونها فقط زمانی قبول میشوند که هم exception را raise کنید و هم پیامی همراه آن بگذارید.
برای ایجاد یک ValueError همراه با پیام، پیام را بهعنوان آرگومان به نوع exception بدهید:
raise ValueError("A meaningful error message here.")