#はじめに
みなさん FizzBuzz ってご存知ですか?恥ずかしながら主は先日まで FizzBuzz という言葉すら知りませんでしたよ、ええ。
ということで、復習がてら FizzBuzzについてまとめたいと思います。
#FizzBuzz とは
元々は英語圏の言葉遊びで、複数のプレイヤーで以下の条件に従って 1 から順番に数字を発言するというゲームのようです。
- 3 で割り切れる数の場合は "Fizz" と発言
- 5 で割り切れる数の場合は "Buzz" と発言
- 3,5の両方で割り切れる場合は "FizzBuzz" と発言
- 上記のいずれにも該当しない場合は数字をそのまま発言
例
A「1」
B「2」
C「Fizz」
A「4」
B「Buzz」
...
A「13」
B「14」
C「FizzBuzz」
ま、こんな感じですね。
#実装
さて、それではルールに従って特に何も考えず単純に実装してみましょう。
fizzbuzz.py
for num in range(1,101):
if num % 15 == 0:
print("FizzBuzz")
elif num % 3 == 0:
print("Fizz")
elif num % 5 == 0:
print("Buzz")
else:
print(num)
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
はい、できました。非常に単純です。
#出力を変える
割る数や出力する文字を変えることができたら便利ですね。
fizzbuzz.py
div1, div2 = 4, 6
word1, word2 = "Nogi", "Zaka"
for num in range(1,101):
if num % div1 == 0:
if num % div2 == 0:
print(word1+word2)
else:
print(word1)
elif num % div2 == 0:
print(word2)
else:
print(num)
最近 class についても学んだので class を使って実践
python
class FizzBuzz:
def __init__(self, div, string):
self.div = div
self.string = string
def check(self,num):
if num % self.div == 0:
return self.string
else:
return ""
def main():
fizz = FizzBuzz(4, "Nogi")
buzz = FizzBuzz(6, "Zaka")
for num in range(1, 101):
result = fizz.check(num) + buzz.check(num)
if result == "":
print(num)
else:
print(result)
if __name__ == "__main__":
main()
1
2
3
Nogi
5
Zaka
7
Nogi
9
10
11
NogiZaka
13
14
15
Nogi
17
Zaka
19
Nogi
21
22
23
NogiZaka
できました!乃木坂万歳!