Python “中的错误”;如果;环(Sage)

Python “中的错误”;如果;环(Sage),python,if-statement,sage,Python,If Statement,Sage,我用的是“圣人”,但我认为这与这个问题无关 我已做出以下定义,并尝试实现if循环: Q = DiagonalQuadraticForm(ZZ,[1,1,1,1]) L = Q.representation_number_list(10) for i in range(len(L)): if L[i] == 0 % 2: print i 在查看Python演示时,似乎我的语法是正确的(我还没有意识到任何语法错误) 但是,没有打印任何内容!事实上,如

我用的是“圣人”,但我认为这与这个问题无关

我已做出以下定义,并尝试实现if循环:

Q = DiagonalQuadraticForm(ZZ,[1,1,1,1])
L = Q.representation_number_list(10)
for i in range(len(L)):
         if L[i]  == 0 % 2:
              print i
在查看Python演示时,似乎我的语法是正确的(我还没有意识到任何语法错误)


但是,没有打印任何内容!事实上,如果我在下一个文本框中声明“I”,则显示的所有内容都是“9”,尽管我对模数进行了调整,但它不会改变。怎么了?

您打算打印偶数吗?这应该起作用:

Q = DiagonalQuadraticForm(ZZ,[1,1,1,1])
L = Q.representation_number_list(10)
for i, v in enumerate(L):
     if v % 2 == 0:
          print i
枚举(…)
可以替换
范围(len(…)

Python(和大多数其他编程语言)中的模数语法与数学表示法不同。在数学方面,你写作

a ≡ b (mod n)
if L[i] == 0 % 2:
表示
a
b
是模
n
全等的。在编程语言中,
被视为对
a
n
的算术运算,类似于除法(它返回除法的剩余部分,而不是商)。要确定该数字是否与另一个数字一致,请将该余数与该数字进行比较,因此将其写成:

a % n == b
因此,您的
if
语句应该是:

if L[i] % 2 == 0:
当你写作时

a ≡ b (mod n)
if L[i] == 0 % 2:
它被解析为:

if L[i] == (0 % 2):
由于
0/2
的剩余部分是
0
,因此它相当于:

if L[i] == 0:

这不是您想要的。

0%2
0
相同,因此如果L[i]==0,您的测试与
相同。这就是你的意思吗?或者你的意思是如果L[i]%2==0
。。。但是您没有语法错误。你能编辑主题以删除令人困惑的措辞吗?已编辑@Barmar,我真的习惯了$a\equiv b(mod2)$,所以我想这就是我的想法。这就是我的意思你能在迭代时打印出
I
吗<代码>打印(repr(i))
是最好的。看起来好像值是字符串,可能是带逗号的数字。