我正在使用" 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,"尽管我摆弄了模数,但这并没有改变。有什么问题?
答案 0 :(得分:1)
Python(和大多数其他编程语言)中的模数语法与数学符号不同。在数学中,你写了
a ≡ b (mod n)
表示a
和b
是全等模n
。在编程语言中,modulus
被视为对a
和n
的算术运算,类似于除法(它返回除法的余数而不是商)。要确定该数字是否与另一个数字一致,请将该余数与数字进行比较,因此将其写为:
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(...))