"if" 循环中的错误 (Sage)

error in "if" loop (Sage)

我正在使用 "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 演示后,我的语法似乎是正确的(我还没有意识到任何语法错误。)

但是,没有打印任何内容!事实上,如果我在下一个文本框中声明 "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

enumerate(...)可以代替range(len(...))

Python(以及大多数其他编程语言)中的模数语法与数学符号不同。在数学中,你写

a ≡ b (mod n)

表示ab同余模n。在编程语言中,modulus 被视为对 an 的算术运算,类似于除法(returns 除法的余数而不是商)。要确定该数字是否与另一个数字一致,您将余数与该数字进行比较,因此它写为:

a % n == b

因此,您的 if 语句应该是:

if L[i] % 2 == 0:

写的时候

if L[i] == 0 % 2:

它被解析为:

if L[i] == (0 % 2):

并且由于 0 / 2 的余数是 0,它等同于:

if L[i] == 0:

这不是你想要的。