Fizz buzzΒΆ
Toy implementation of the Fizz buzz game.
#!/usr/bin/env python3
"""Fizz buzz."""
import sys
class Injector: # pylint: disable=too-few-public-methods
"""Callable to inject a word if value is a multiple."""
def __init__(self, multiple: int, word: str) -> None:
"""Initializer."""
self._multiple = multiple
self._output = f'{word}!'
def __call__(self, value: int):
"""Callable."""
result = None
if value % self._multiple == 0:
result = self._output
return result
def fizz_buzz(start: int, end: int) -> None:
"""Fizz buzz."""
injectors = [
Injector(3, 'Fizz'),
Injector(5, 'Buzz'),
]
for i in range(start, end + 1):
items = []
output = None
for injector in injectors:
if (item := injector(i)):
items.append(item)
output = ' '.join(items) if items else str(i)
print(output)
def _main() -> int:
fizz_buzz(1, 50)
return 0
if __name__ == '__main__':
sys.exit(_main())