###配列に結果を格納し、出力する方式を採用
動作確認はこちらのサイトを使いました
こんな感じで出力されていればOK
['1', '2', 'Fizz', '4', 'Buzz', 'Fizz', '7', '8', 'Fizz', 'Buzz', '11', 'Fizz', '13', '14', 'FizzBuzz']
1.一般的なFizzBuzz
fizzbuzz = []
for i in range(1, 16):
if i % 15 == 0:
fizzbuzz.append('FizzBuzz')
elif i % 3 == 0:
fizzbuzz.append('Fizz')
elif i % 5 == 0:
fizzbuzz.append('Buzz')
else:
fizzbuzz.append(str(i))
print(fizzbuzz)
2.関数と化したFizzBuzz
fizzbuzz = []
def get_fizzbuzz(i):
if i % 15 == 0:
return 'FizzBuzz'
elif i % 3 == 0:
return 'Fizz'
elif i % 5 == 0:
return 'Buzz'
return str(i)
for i in range(1, 16):
fizzbuzz.append(get_fizzbuzz(i))
print(fizzbuzz)
3.ループ内で関数定義することも可能
fizzbuzz = []
for i in range(1, 16):
# その場しのぎ的な?
def get_fizzbuzz(i):
if i % 15 == 0:
return 'FizzBuzz'
elif i % 3 == 0:
return 'Fizz'
elif i % 5 == 0:
return 'Buzz'
return str(i)
fizzbuzz.append(get_fizzbuzz(i))
print(fizzbuzz)
4.ラムダ式と化したFizzBuzz
fizzbuzz = []
get_fizzbuzz = lambda i: 'FizzBuzz' if i % 15 == 0 else 'Fizz' if i % 3 == 0 else 'Buzz' if i % 5 == 0 else str(i)
for i in range(1, 16):
# [3.]と同じように ラムダ式はここに書いてもOK
# get_fizzbuzz = lambda i: 'FizzBuzz' if i % 15 == 0 else 'Fizz' if i % 3 == 0 else 'Buzz' if i % 5 == 0 else str(i)
fizzbuzz.append(get_fizzbuzz(i))
print(fizzbuzz)
5.三項演算と化したFizzBuzz
fizzbuzz = []
for i in range(1, 16):
fizzbuzz.append('FizzBuzz' if i % 15 == 0 else 'Fizz' if i % 3 == 0 else 'Buzz' if i % 5 == 0 else str(i))
print(fizzbuzz)
6.リスト内包表記と化したFizzBuzz
fizzbuzz = ['FizzBuzz' if i % 15 == 0 else 'Fizz' if i % 3 == 0 else 'Buzz' if i % 5 == 0 else str(i) for i in range(1, 16)]
print(fizzbuzz)
7.ワンライナーと化したFizzBuzz
print(['FizzBuzz' if i % 15 == 0 else 'Fizz' if i % 3 == 0 else 'Buzz' if i % 5 == 0 else str(i) for i in range(1, 16)])
###ラムダ式もリスト内包表記も結局は三項演算
この記法を覚えることが重要?
'FizzBuzz' if i % 15 == 0 else 'Fizz' if i % 3 == 0 else 'Buzz' if i % 5 == 0 else str(i)
javascriptでこう書いているのと同じ
i % 15 === 0 ? 'FizzBuzz' : i % 3 === 0 ? 'Fizz' : i % 5 === 0 ? 'Buzz' : String(i)
// 参考:javascriptでワンライナー
console.log([...Array(15)].map((v, i) => (i => i % 15 === 0 ? 'FizzBuzz' : i % 3 === 0 ? 'Fizz' : i % 5 === 0 ? 'Buzz' : String(i))(i + 1)));