"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)
表示a
和b
同余模n
。在编程语言中,modulus
被视为对 a
和 n
的算术运算,类似于除法(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:
这不是你想要的。
我正在使用 "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)
表示a
和b
同余模n
。在编程语言中,modulus
被视为对 a
和 n
的算术运算,类似于除法(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:
这不是你想要的。