ジェネレータを使ってFizzBuzzを書いてみた。

def FizzBuzzCheck(n):
    if (n % 15)==0:
        return "FizzBuzz"
    elif (n % 3)==0:
        return "Fizz"
    elif (n % 5)==0:
        return "Buzz"
    else:
        return n

def IncrementGenerator(min=0,max=0,fn=lambda x:x):
    n = min
    while(max==0 or n < max):
        yield fn(n)
        n = n + 1

fzbz = IncrementGenerator(min=0,max=100,fn=FizzBuzzCheck)

for ii in fzbz:
    print ii

無限にループするジェネレータが書けるのね。


…もう少し工夫するとmapのように振る舞うジェネレータが書けそうな気がする。