错误"如果"循环(Sage)

时间:2016-06-08 20:21:24

标签: python if-statement 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演示时,似乎我的语法是正确的(我还没有意识到任何语法错误。)

但是,什么也没有打印!事实上,如果我宣布"我"在下一个文本框中,显示的所有内容都是" 9,"尽管我摆弄了模数,但这并没有改变。有什么问题?

2 个答案:

答案 0 :(得分:1)

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

a ≡ b (mod n)

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

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:

这不是你想要的。

答案 1 :(得分:0)

你打算打印偶数吗?这应该有效:

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(...))