LoginSignup
0
1

More than 3 years have passed since last update.

Python を勉強しようと思い、まずはFizzBuzz問題をやってみようと思います。
使用環境:Python 3.6.3

FizzBuzz問題とは

Jeff Atwood さんが提唱したこんな問題。

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

マトリクスやベン図で書くとこんな感じ
fizzbuzz_image.png

コードにしてみる

for バージョン

Python
for i in range(1, 101):
    if i % 3 == 0 and i % 5 == 0:
        print('FizzBuzz')
    elif i % 3 == 0:
        print('Fizz')
    elif i % 5 == 0:
        print('Buzz')
    else:
        print(i)

while バージョン

Python
i = 1
while i <= 100:
    if i % 3 == 0 and i % 5 == 0:
        print('FizzBuzz')
    elif i % 3 == 0:
        print('Fizz')
    elif i % 5 == 0:
        print('Buzz')
    else:
        print(i)
    i += 1

三項演算子で書いてみる

for i in range(1,101):
    print('Fizz' if (i % 3 == 0 and i % 5 == 0) else 'Fizz' if (i % 3 == 0) else 'Buzz' if (i % 5 == 0) else i)

ポイントは、print文の中に演算式を入れ込んでいるところ(さすがに見にくいので、各条件式に()つけてます)。
でも、入れ子の三項演算子にしないといけないから見にくい。。。

参考
三項演算子の構文
(条件がTrueのときの値) if (条件式) else (条件がFalseのときの値)

やってみてわかったこと

  • FizzBuzz問題は、条件判定や繰り返しの構文がわかってよいですね。
  • 個人的には、Python の三項演算子の構文に慣れない。
0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1