2009/11/11

Python で Fizz Buzz に挑戦

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzzBuzzz
16

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

ルールは以上。
非常に簡単ですね。

Pythonで書くのも非常に簡単でございやした。

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

これを思いつきましたが、後から調べてみるともっとスマートにする方法として

if i%3 == 0 and i%5 == 0:

if i%15 == 0:

に変更したりとか、究極ワンライナーで頑張るとか…

 

これは非常にベーシックなやつで、集合演算だのどうのこうのかなり豊富なバリエーションがあるようです。