2014-09-28 2 views
-5

다음은 아래 표와 같은 내 코드입니다 :Elif 문 구문 오류 : 구문이 잘못 되었습니까?

menu= "Welcome to the menu\n"          \ 
+  "Please select an option below:\n"       \ 
+ ( "0 - Enter a number\n" + "1 - Display current number\n" + \ 
"2 - Divisibility checking\n" + "3 - Perfect checking\n"  + \ 
"4 - Triangular checking\n" + "5 - Quit\n") 
x == ("") 
while option!=5:             # <<< Q2 
    print(menu) 
    option= int(input("Enter option: ")) 
    if option==0: 
     x= int(input("What is your number?: ")) 
     while x <=0: 
      x= int(input("Must be positive, please! What is your number?: ") 
    elif option==1:            # <<< Q1 
     print("The current number is", x) 
     elif (x == ""): 
      print("No number yet - Please input a number and try again.") 
      x= int(input("What is your number?: ")) 

Q1 : 내가 두 번째 elif 문, 내 코드의 line 14에 대한 오류 메시지가 표시 유지하는 이유 궁금했다.

Q2 : I이었다 또한 내가 아직 옵션을 입력하도록 사용자에게 메시지가 표시되지 않았다면 처음 while 문, 그때 print 메뉴를 option!=5은 "option"를 정의하는 방법, 궁금.

이 두 가지 사례에 대한 도움은 정말 감사하겠습니다.

감사합니다.

+2

코드를 읽었습니까? '엘프 '가 무엇인지 알고 있습니까? –

+0

while 루프가 아무것도하지 않기 전에'elif (x == "")'''x == ("")'와 같은 elif 문을 중첩 할 수 없습니다. –

+1

앞의 줄에있는'int()'괄호를 닫는 것을 잊었습니다. –

답변

0

두 번째 elif-statement와 관련해서는 중첩이 잘못되었다고 생각합니다.

당신이 사용할 수있는 옵션을 통과 한 외부 의사 결정 트리를 가지고, 트리입니다가 선택한 옵션에 다른 문이 아니기 때문에

if option == 0 --> do a 
elif option == 1 --> do b 
elif option == 2 --> do c and so on 

당신은, 내부 ELIF에 필요하지 않습니다 . 방금 새로운 결정 트리를 시작합니다 (x가 이미 할당되어 있는지 확인하고 숫자를 요구하지 않으면 숫자를 표시합니다). 따라서 올바른 코드는 다음과 같아야합니다.

elif option == 1: 
    if x == "": 
     print("No number yet - Please input a number and try again.") 
     x= int(input("What is your number?: ")) 
    else: 
     print("The current number is", x) 
elif option == 2 
    --> Handling of option 2 

이렇게하면됩니다. 나는 그렇지 않으면 나는이 꽤 많이 이그나시오 무슨 의미입니다 그가 물었을 때 당신이 알고 있다면,의 ELIF가 속한 것을 생각 출력

"The current number is " 
"No number yet - Please input a number and try again."... 

을 얻을 것 먼저하면 문을 넣을 수있는 자유를했다.

+0

가장 중요한 문제를 놓친 것 같아요. 누락 된')'이 있습니다. – SethMMorton

+0

이것은 정말로 문제이며 Martijn에 의해 올바르게 지적되었지만 그녀는 두 번째 elif 문에서 문제를 언급 했으므로 (편집이 잘못되었으므로 Q1은 코드에서 두 줄 더 아래로 표시해야 함), 나는 여전히 잘못 들여 놓은 엘프는 그녀의 문제입니다. – MichaelA

관련 문제