Python “中的错误”;如果;环(Sage)
我用的是“圣人”,但我认为这与这个问题无关 我已做出以下定义,并尝试实现if循环: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演示时,似乎我的语法是正确的(我还没有意识到任何语法错误) 但是,没有打印任何内容!事实上,如
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))
是最好的。看起来好像值是字符串,可能是带逗号的数字。