2014-11-14 5 views
0

나는 소수 프로그램을 작성했으며, 아래의 "No prime 또는 composite"메시지를 출력하는 데 문제가있다. 나는 내 코드가 그대로 있다고 생각한다. 이 문제에 대한 의견을 보내 주시면 감사하겠습니다. 사전에 감사합니다내 프로그램이 내가 원하는 메시지를 출력하지 않는다.

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 영원히 False에과 동등하다 0에과 동등 유지, 그래서 귀하의 코드는 Chantwaffle, 당신이 말한대로 "Neither a prime nor a composite"

+0

답변 해 주셔서 감사합니다. 하지만 If 문은 영원히 0과 동일하게 유지되지 않도록합니다. 나는 그것이 작동하지 않는다고 생각합니다 ...? – DreamInCode

+0

's '로 무엇이든 당신의 두 라인 모두 그냥 인쇄 라인이고, 변수 설정은 없습니다. 's = 0' 이것은's'가 영원히 0이되도록 설정합니다.'elif s : print s, "프라임도 합성도 아닙니다"'이것은's'가'True'라는 문장을 출력 할 때's' 만 출력합니다. 's'가'0'과 거의 다른 것 인 경우입니다. – Chantwaffle

0

를 인쇄 위하여려고하고있다 방법이 없습니다 0을 제외한 다른 것과 똑같은 것을 결코 얻지 못할 것입니다. 코드가 다른 것으로 바뀌지 않기 때문입니다. 또한 < = 2 인 경우에는 for 루프를 입력하지 않으며 elif는 항상 False입니다. s는 처음부터 0으로 정의되어 있기 때문입니다. 당신이 성취하고자하는 것을 생각하고 그것을 얻기 위해 무엇을해야하는지에 대한 코드를 다시 작성하십시오. 이 코드의 논리를 수정하십시오.

관련 문제