summer_tree_home

Check iOでPython3をマスターするぜっ

Fizz Buzz (Library 2.0) - 3と5の倍数でアホに?

難問続きだったIncineratorを終わらせて、Library2.0にやってきた。なんだかサクサク進めそうな予感。

どんな問題?

Fizz Buzz
http://www.checkio.org/mission/fizz-buzz/

数字が3と5で割り切れるなら"Fizz Buzz"、
3で割り切れるなら"Fizz"、
5で割り切れるなら"Buzz"、
それ以外なら、その数字を文字列として返せ。

世界のナベアツみたいな問題かと思ったら、もっとシンプルに倍数だけを考えればよい問題。

どうやって解く?

まあ、ひねらず、そのまま書いてみる。

def checkio(number):
    if number % 3 == 0 and number % 5 == 0:
        return 'Fizz Buzz'
    elif number % 3 == 0:
        return 'Fizz'
    elif number % 5 == 0:
        return 'Buzz'
    else:
        return str(number)

さくっとクリア。

ちなみに、3の倍数と3の付く数字だけ"Aho"を返すなら、こんな感じかな。

def checkio(number):
    if number % 3 == 0 or '3' in str(number):
        return 'Aho'
    else:
        return str(number)

他の人の答え

辞書を使って switch-case 文を代替。

fizz_buzz = bool(number % 3), bool(number % 5)
    return {(False, False): "Fizz Buzz",
            (False, True): "Fizz",
            (True, False): "Buzz",
            (True, True): str(number)}[fizz_buzz]

http://www.checkio.org/mission/fizz-buzz/publications/bryukh/python-3/switch-case/


やっぱり、ちょっと物足りない。