FizzyWhizzyDuzzy的python实现

早上无聊的时候看到这个题目,https://www.jinshuju.net/f/EGQL3D

用python5行实现,但总觉得不舒服,晚上回去再研究研究

实现代码:

def fizzbuzzwhizz(x, y, z):
    data = {x*y*z:'fizzbuzzwhizz', x*y:'fizzbuzz', y*z:'bizzwhizz', z*x:'fizzwhizz',x:'fizz',y:'buzz',z:'whizz'}
    for n in range(1, 101):
        tmp = [i for i in [x*y*z,x*y,y*z,z*x,x,y,z] if not n % i]
        print data[x] if n / 10 == x or n % 10 == x else (data[tmp[0]] if tmp else n)
if __name__ == '__main__':
    fizzbuzzwhizz(3, 5, 7)

下午看了下网友的解答,有个只用3行的,代码如下:

def fizzbuzzwhizz(x, y, z):
    for n in range(1, 101):
        print 'fizz' if str(n).count(str(x)) else n if n % x and n % y and n % z \
        else ('fizz' if not n % x else '') + ('buzz' if not n % y else '') + ('whizz' if not n % z else '')

当然强调代码行数的多少也没多大意义吧。

今天看到网友用lambda写成了一行,呵呵,晚安。

fiz = lambda a,b,c:['Fizz'*(str(a) in str(x)) or 'Fizz'*(x%a==0)+'Buzz'*(x%b==0)+'Whizz'*(x%c==0) or x for x in range(1,101) if 0<a<b<c<10]


你可能感兴趣的:(FizzyWhizzyDuzzy的python实现)