2014-11-14 67 views
0

我已經寫了一個素數程序,並且在打印出下面的消息「既不是素數也不是組合」時遇到了麻煩。我認爲我的代碼很好,因爲它是。我非常感謝對此問題的任何評論。謝謝你,提前我的程序沒有打印出我想要的信息

def prime_number(): 
    a = input("Please enter a number:") 

    x = True 
    s = 0 
    for i in range(2, a): 
      while x: 
       if a%i == 0: 
        x = False 
       elif s: 
         print s,"Neither a prime nor a composite" 
       else: 
        x = True 


    if x: 
     print a,"is a prime number." 
    elif s: 
     print s,"Neither a prime nor a composite" 
    else: 
     print a,"is not a prime number." 



prime_number() 
+2

我很難理解你的代碼,爲什麼你不會以有意義的方式來命名變量而不是x,s,a? –

+0

你也可以包括我輸入一些值爲什麼你期望黃金和複合。 –

+0

你還可以給我一個「既不是素數也不是合數」的數字。 –

回答

0

你的變量s將保持equall到0這是equall到False永遠的,所以也沒有辦法,你的代碼將打印"Neither a prime nor a composite"

+0

謝謝你的回答。但有一個If語句不會永遠保持等於0 ..我想這不起作用...? – DreamInCode

+0

兩者你用's'做的任何行只是打印行,沒有可變的設置。 's = 0'這個集合's'永遠等於0,'elif s: print s,「既不是素數也不是合成」'只有在語句'if s'爲'True'時纔會打印's'如果's'幾乎不是'0'。 – Chantwaffle

0

就像Chantwaffle說,你因爲沒有代碼將它改爲其他任何東西,所以它永遠不會等於0。此外,如果< = 2,則永遠不會輸入此循環,並且elif s始終爲False,因爲s在開始時定義爲0。重新編寫代碼,考慮你想要達到的目標以及應該做些什麼才能獲得它。修復此代碼的邏輯。

相關問題