Python 使用布尔';不是';x运算符

Python 使用布尔';不是';x运算符,python,boolean,fizzbuzz,Python,Boolean,Fizzbuzz,如果您能帮助理解此python代码,我将不胜感激,因为我不熟悉编码/python: for I in range (1,16):print ( not i%3) * 'FIZZ' + ( not i%5) * 'BUZZ' or i 当我运行此代码时: for i in range (1,16): print i, print i%3, print i%5, print (not i%3), print (not i % 5), print ( not i%3) * '

如果您能帮助理解此python代码,我将不胜感激,因为我不熟悉编码/python:

for I in range (1,16):print ( not i%3) * 'FIZZ' + ( not i%5) * 'BUZZ' or i
当我运行此代码时:

for i in range (1,16):
  print i,
  print i%3,
  print i%5,
  print (not i%3),
  print (not i % 5),
  print ( not i%3) * 'FIZZ' + ( not i%5) * 'BUZZ' or i
我添加了一些来尝试理解结果

我得到:

1 1 1 False False 1
2 2 2 False False 2
3 0 3 True False FIZZ
4 1 4 False False 4
5 2 0 False True BUZZ
6 0 1 True False FIZZ
7 1 2 False False 7
8 2 3 False False 8
9 0 4 True False FIZZ
10 1 0 False True BUZZ
11 2 1 False False 11
12 0 2 True False FIZZ
13 1 3 False False 13
14 2 4 False False 14
15 0 0 True True FIZZBUZZ

例如,当
(不是i%3)
返回
0
时,不确定为什么
True
返回
FIZZ/BUZZ
?我认为它应该返回
False
,这似乎是错误的方向。

在最后一行,
I=15
<代码>15%3=0和
15%5=0
,因此
不是15%3
=1和
不是15%5
=1。1相当于
True
,这就是打印
True
的原因。

不是0
True
相同,因为
0
相当于
False
亲爱的米里亚姆,谢谢你的解释,非常感谢。阿拉斯泰尔