今天看到了一个非常有趣的问题,用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 。