.. | ||
.exercism | ||
HELP.md | ||
raindrops.py | ||
raindrops_test.py | ||
README.md |
Raindrops
Welcome to Raindrops on Exercism's Python Track.
If you need help running the tests or submitting your code, check out HELP.md
.
Introduction
Raindrops is a slightly more complex version of the FizzBuzz challenge, a classic interview question.
Instructions
Your task is to convert a number into its corresponding raindrop sounds.
If a given number:
- is divisible by 3, add "Pling" to the result.
- is divisible by 5, add "Plang" to the result.
- is divisible by 7, add "Plong" to the result.
- is not divisible by 3, 5, or 7, the result should be the number as a string.
Examples
- 28 is divisible by 7, but not 3 or 5, so the result would be
"Plong"
. - 30 is divisible by 3 and 5, but not 7, so the result would be
"PlingPlang"
. - 34 is not divisible by 3, 5, or 7, so the result would be
"34"
.
A common way to test if one number is evenly divisible by another is to compare the [remainder][remainder] or [modulus][modulo] to zero.
Most languages provide operators or functions for one (or both) of these.
[remainder]: https://exercism.org/docs/programming/operators/remainder
[modulo]: https://en.wikipedia.org/wiki/Modulo_operation
How this Exercise is Structured in Python
This exercise is best solved with Python's %
(modulo) operator, which returns the remainder of positive integer division.
It has a method equivalent, operator.mod()
in the operator module.
Python also offers additional 'remainder' methods in the math module.
math.fmod()
behaves like %
, but operates on floats.
math.remainder()
implements a "step closest to zero" algorithm for the remainder of division.
While we encourage you to get familiar with these methods, neither of these will exactly match the result of %
, and are not recommended for use with this exercise.
The built-in function divmod()
will also give a remainder than matches %
if used with two positive integers, but returns a tuple
that needs to be unpacked.
Source
Contributed to by
- @behrtam
- @BethanyG
- @bsoyka
- @cmccandless
- @Dog
- @ikhadykin
- @kytrinyx
- @lowks
- @N-Parsons
- @pheanex
- @sjakobi
- @tqa236
- @yawpitch
Based on
A variation on FizzBuzz, a famous technical interview question that is intended to weed out potential candidates. That question is itself derived from Fizz Buzz, a popular children's game for teaching division. - https://en.wikipedia.org/wiki/Fizz_buzz