这个Modulo在Python 33中出了什么问题

时间:2013-12-23 12:27:54

标签: python python-3.3

from math import *

def prime():
a = 0
b = 0
x = 2*a+1
y = b

for a in range (1,5000) and b in range (0,5000) and y<x :
    ctr = 0
    if (x % y == 0):
        ctr += 1
        return [None]
    else:
        primes = (x)
        ctr+= 1
        return [None]
    print (primes[999]);

我有一个问题需要解决但是当它到达模数(%)符号时它会说TypeError:'bool'对象不可迭代“

2 个答案:

答案 0 :(得分:2)

不是比较值,而是将0分配给x % y,这是不可能的。你可以像这样修复它

if (x % y == 0):

修好后,

for a in range (1,5000) and b in range (0,5000) and y<x :

这一行不起作用,你必须像这样分割循环

for a in range (1,5000):
    for b in range (0,5000):
        ...
        ...

答案 1 :(得分:1)

模数符号没问题,请注意错误消息中的^

  File "so-modulo-test.py", line 11
    if (x % y = 0):
              ^
SyntaxError: invalid syntax

=表示assignment statement。您需要==equal comparison operator,如

if x % y == 0:

此外,and是逻辑上的AND,不要与人类如何说话混淆。你的循环应该是这样的:

for a in range (1,5000):
    for b in range (0, x):
        ...