こんにちは、@Yoshimiです。
プログラマーの能力をテストするのに使われていることで有名なFizzBuzz問題です。今、Pythonを勉強しているのでPythonで実装していきます。
Fizz Buzz
プレイヤーは円状に座る。最初のプレイヤーは「1」と数字を発言する。次のプレイヤーは直前のプレイヤーの次の数字を発言していく。ただし、3で割り切れる場合は「Fizz」(Bizz Buzzの場合は「Bizz」)、5で割り切れる場合は「Buzz」、両者で割り切れる場合(すなわち15で割り切れる場合)は「Fizz Buzz」(Bizz Buzzの場合は「Bizz Buzz」)を数の代わりに発言しなければならない。発言を間違えた者や、ためらった者は脱落となる。
引用:https://ja.wikipedia.org/wiki/Fizz_Buzz
Fizz Buzz問題
1からn回までを繰り返し
- 3の倍数はFizz
- 5の倍数はBuzz
- 15の倍数はFizz Buzz
- それ以外は、数字
を出力する
for i in range(1, 101): if i%15 == 0: # 15の倍数 print('Fizz Buzz', end=' ') elif i%5 == 0: # 5の倍数 print('Buzz', end=' ') elif i%3 == 0: # 3の倍数 print('Fizz', end=' ') else: print(i, end=' ')
OUT
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 Fizz Buzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 Fizz Buzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 Fizz Buzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 Fizz Buzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 Fizz Buzz 76 77 Fizz 79 Buzz Fizz 82 83 Fizz Buzz 86 Fizz 88 89 Fizz Buzz 91 92 Fizz 94 Buzz Fizz 97 98 Fizz Buzz
15の倍数は初めに記述することがポイントになります。15という数字は3の倍数でもあり、5の倍数でもあります。なので、先に3、5の処理を記述してしまうと、そこで処理が行われてしまいます。
# 他の書き方 for i in range(1, 101): message = '' if i%3 ==0: message += 'Fizz' if i%5 ==0: message += 'Buzz' print(message or i, end=' ')
最後に
Aの場合はA+なる。Bの場合はB+になる。などの処理を自分て正確に動いたときはうれしいものです。もちろん他の記述方法があると思うので、より高速に動く記述方法を見つけていきたいと思います。