“if”循环出错(Sage)

2024-06-11 11:06:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是“圣人”,但我不认为这与这个问题有关。你知道吗

我做了以下定义,并尝试实现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”,尽管我摆弄了模数,但它并没有改变。怎么了?你知道吗


Tags: innumberforlenif定义语法range
2条回答

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:

这不是你想要的。你知道吗

你打算打印偶数?这应该起作用:

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

相关问题 更多 >