一个有趣的python用法:FizzBuzz问题

今天看到了一个非常有趣的问题,用python解决起来非常简洁。

问题描述:

写一个程序,打印数字1到100,3的倍数打印“Fizz”来替换这个数,5的倍数打印“Buzz”,对于既是3的倍数又是5的倍数的数字打印“FizzBuzz”。

python解决方案:

for x in range(1, 101):
    print('fizz'[x%3*len('fizz')::] + 'buzz'[x%5*len('buzz')::] or x)

解释:
先看第一部分'fizz'[x%3*len('fizz')::],如果 x 是3的倍数,就变成了'fizz'[::] = 'fizz';否则x%3至少为1,也就是'fizz'[len('fizz')::] = ''
后面'buzz'的处理同理,所以如果即是3的倍数又是5的倍数,就会输出'fizzbuzz'了。
如果既不是3的倍数又不是5的倍数,就输出 x 。

你可能感兴趣的:(python,python,算法,数据结构)