2013-12-23 24 views
-1
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]); 

我有一個問題,我需要解決,但是當它到達模(%)簽署它說類型錯誤:「布爾」對象不是可迭代」有什麼不對的模在Python 33

+1

'對於範圍(1,5000)和b在範圍內(0,5000)和y thefourtheye

+0

@Andra V請不要編輯您的問題,直到原始答案變得無法理解。相反,請[請打開一個新問題](http://stackoverflow.com/questions/ask)。這樣,同樣問題的人也可以從答案中獲益。別擔心,問題是免費的。謝謝! – phihag

+1

我回滾了這個問題。 Andra V,正如@phyrg解釋的那樣,如果你把問題編輯成別的東西,答案就變得無法理解。如果您有其他問題,請打開一個新問題。 StackOverflow使用問題/答案格式,具有特定和離散的問題,而不是線程式的論壇式格式,在這種格式中,所有相關問題都得到解決之前有很長的來回。 – DSM

回答

2

相反比較值的,你是x % y分配0,這是不可能的。你可以解決它像這樣

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): 
     ... 
     ... 
+0

範圍內(1,5000)和b範圍內(0,5000)和y Andra

+0

@AndraV請檢查更新的答案。 – thefourtheye

+0

我想到了這一點,但首先我想讓模數線路工作:D謝謝 – Andra

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): 
     ... 
+0

謝謝......我從數學導入*開始,所以它應該工作... – Andra

+1

模運算符始終可用。無論如何,'import'不會改變語法,只會綁定名稱。另外請注意,問題與模運算符完全無關。 – phihag

+0

因此,我得到布爾錯誤的事實與for語句有關,只有這一點? – Andra