- Notifications
You must be signed in to change notification settings - Fork 46.7k
/
Copy pathfizz_buzz.py
65 lines (57 loc) · 1.93 KB
/
fizz_buzz.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# https://en.wikipedia.org/wiki/Fizz_buzz#Programming
deffizz_buzz(number: int, iterations: int) ->str:
"""
| Plays FizzBuzz.
| Prints Fizz if number is a multiple of ``3``.
| Prints Buzz if its a multiple of ``5``.
| Prints FizzBuzz if its a multiple of both ``3`` and ``5`` or ``15``.
| Else Prints The Number Itself.
>>> fizz_buzz(1,7)
'1 2 Fizz 4 Buzz Fizz 7 '
>>> fizz_buzz(1,0)
Traceback (most recent call last):
...
ValueError: Iterations must be done more than 0 times to play FizzBuzz
>>> fizz_buzz(-5,5)
Traceback (most recent call last):
...
ValueError: starting number must be
and integer and be more than 0
>>> fizz_buzz(10,-5)
Traceback (most recent call last):
...
ValueError: Iterations must be done more than 0 times to play FizzBuzz
>>> fizz_buzz(1.5,5)
Traceback (most recent call last):
...
ValueError: starting number must be
and integer and be more than 0
>>> fizz_buzz(1,5.5)
Traceback (most recent call last):
...
ValueError: iterations must be defined as integers
"""
ifnotisinstance(iterations, int):
raiseValueError("iterations must be defined as integers")
ifnotisinstance(number, int) ornotnumber>=1:
raiseValueError(
"""starting number must be
and integer and be more than 0"""
)
ifnotiterations>=1:
raiseValueError("Iterations must be done more than 0 times to play FizzBuzz")
out=""
whilenumber<=iterations:
ifnumber%3==0:
out+="Fizz"
ifnumber%5==0:
out+="Buzz"
if0notin (number%3, number%5):
out+=str(number)
# print(out)
number+=1
out+=" "
returnout
if__name__=="__main__":
importdoctest
doctest.testmod()