مسیرها
/
Python
Python
/
تمرین‌ها
/
قطره‌های باران
قطره‌های باران

قطره‌های باران

آسان

مقدمه

قطرات باران نسخه‌ی کمی پیچیده‌تر چالش FizzBuzz است، یک پرسش کلاسیک در مصاحبه‌ها.

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

وظیفه‌ی شما این است که یک عدد را به صداهای قطره‌ی باران متناظر با آن تبدیل کنید.

اگر یک عدد داده‌شده:

  • اگر بر ۳ بخش‌پذیر باشد، «Pling» را به نتیجه اضافه کنید.
  • اگر بر ۵ بخش‌پذیر باشد، «Plang» را به نتیجه اضافه کنید.
  • اگر بر ۷ بخش‌پذیر باشد، «Plong» را به نتیجه اضافه کنید.
  • اگر بر ۳، ۵ یا ۷ بخش‌پذیر نباشد، نتیجه باید خود عدد به‌صورت رشته باشد.

مثال‌ها

  • ۲۸ بر ۷ بخش‌پذیر است، اما بر ۳ یا ۵ نه، بنابراین نتیجه "Plong" خواهد بود.
  • ۳۰ بر ۳ و ۵ بخش‌پذیر است، اما بر ۷ نه، بنابراین نتیجه "PlingPlang" خواهد بود.
  • ۳۴ بر ۳، ۵ یا ۷ بخش‌پذیر نیست، بنابراین نتیجه "34" خواهد بود.
Note

یک روش رایج برای آزمودن این که آیا یک عدد بر عدد دیگری بخش‌پذیر است، مقایسه‌ی «باقیمانده» یا «پیمانه» با صفر است. بیشتر زبان‌ها عملگرها یا توابعی برای یکی (یا هر دوی) این‌ها فراهم می‌کنند.

ساختار این تمرین در Python

بهترین راه حل این تمرین، استفاده از عملگر % در Python (باقیمانده) است که باقیمانده‌ی تقسیم دو عدد صحیح مثبت را برمی‌گرداند. معادل متدی آن، operator.mod() در ماژول operator است.

Python همچنین در ماژول math متدهای دیگری برای «باقیمانده» ارائه می‌دهد. math.fmod() مانند % عمل می‌کند، اما روی اعداد اعشاری کار می‌کند. math.remainder() الگوریتمی با «گام نزدیک‌ترین به صفر» را برای باقیمانده‌ی تقسیم پیاده‌سازی می‌کند. هرچند شما را تشویق می‌کنیم با این متدها آشنا شوید، اما هیچ‌کدام از آن‌ها دقیقاً با نتیجه‌ی % یکسان نیستند و برای استفاده در این تمرین توصیه نمی‌شوند.

تابع توکار divmod() نیز اگر با دو عدد صحیح مثبت به کار برود، باقیمانده‌ای مطابق با % می‌دهد، اما یک tuple برمی‌گرداند که باید بازگشایی شود.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Python Exercism

آماده‌اید قطره‌های باران را شروع کنید؟

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

بررسی عمیق قطره‌های باران!

راه‌حل‌هایی را بررسی کنید که از خطوط لوله‌ی تابعی، ضرب ماتریسی، راه‌حل‌های جدولی پیش‌محاسبه‌شده با یک ماکرو، رویکرد شیءگرا، استفاده‌ی چشمگیر از Python و TCL و یک نسخه‌ی سازمانی بهره می‌برند.