【发布时间】:2017-04-25 22:51:03
【问题描述】:
在学习 python 时,我一直在玩弄一些不同的 Fizz Buzz 脚本。我遇到了这个效果很好但我无法破译它是如何工作的。我知道正常的嘶嘶声如何与 for 循环和“如果 i % 3 == 0 和 i % 5 == 0”一起工作。让我难过的是 "Fizz"(not i%3) + "Buzz"(not i%5)" 有效。
x = ["Fizz"*(not i%3) + "Buzz"*(not i%5) or i for i in range(1, 100)]
【问题讨论】:
-
您可以尝试在交互式 Python 会话中独立评估小型
i的部分:"Fizz"*(not 10%3)或"Buzz"*(not 5%5)。 -
在 Python 中,字符串上的 * 运算符允许将字符串“乘”以一个正整数……即指定重复该字符串的次数。所以 "somestring" * 0 表示完全不重复;用空字符串替换它。因此,这个巧妙的列表推导式根据对范围内每个数字的各种模(数学余数)运算的数值结果的布尔强制生成“Fizz”、“Buzz”、“FizzBuzz”字符串或整数列表1 到 100)。