Python を勉強しようと思い、まずはFizzBuzz問題をやってみようと思います。
使用環境:Python 3.6.3
FizzBuzz問題とは
Jeff Atwood さんが提唱したこんな問題。
1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
コードにしてみる
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 の三項演算子の構文に慣れない。