2013-04-03 1 views
4

저는 파이썬에 매우 익숙합니다. 나는 반복적으로 반복 할 필요가있다. 사용자에게 옵션을 선택하도록 요청한 다음, 명령을 실행하고 사용자가 종료 할 때까지 반복한다. 사용자가 다른 옵션을 선택하면 프로그램은 올바른 옵션을 선택할 때까지 계속 값을 선택하도록 요청해야합니다. 지금까지는 제 프로그램이 그렇게 잘 진행되지 않았습니다. 가능한 한 엘프 조건을 지키고 싶습니다. 누군가가 도움을 줄 수 있습니까? 많은 감사합니다!파이썬 2.7.3 while 루프

print """ 
How do you feel today? 
1 = happy 
2 = average 
3 = sad 
0 = exit program 
""" 

option = input("Please select one of the above options: ") 
while option > 0 or option <=3: 
    if option > 3: 
     print "Please try again" 
    elif option == 1: 
     print "happy" 
    elif option == 2: 
     print "average" 
    elif option == 3: 
     print "sad" 
    else: 
     print "done" 
+0

에서 루프를 중지 휴식을 사용할 수 있습니다. 'raw_input'을 사용하고 결과를'int'에 캐스트하십시오 (또는 문자열로 작업하기 만하면됩니다). – Matthias

답변

1
import sys 
option = int(input("Please select one of the above options: ")) 
while not option in (0, 1, 2, 3): 
    option = int(input("Please select one of the above options: ") 
    if option == 0: sys.exit() 
    else: print "Please try again" 
if option == 1: 
     print "happy" 
elif option == 2: 
     print "average" 
elif option == 3: 
     print "sad" 

논리 옵션이없는 경우 0, 1, 2, 3, 프로그램 입력을 요구함이다. 해당 범위 내에 있으면 루프가 끝나고 결과를 인쇄합니다. 입력이 0이면 프로그램은 sys.exit()을 사용하여 종료됩니다.

다른 방법으로, 간단하고 짧은 프로그램을 만들 dictionary을 사용할 수 있습니다 다음 break 명령은 당신을 위해 루프를 종료합니다

import sys 
userOptions = {1: 'happy', 2: 'average', 3: 'sad'} 
option = int(input("Please select one of the above options: ")) 
while not option in (0, 1, 2, 3): 
    option = int(input("Please select one of the above options: ") 
    if option == 0: sys.exit() 
    else: print "Please try again" 
print userOptions[option] 
4

- 제어 흐름을 시작하는 측면에서, 그러나를, 정말 중 하나를하지 않는 것이 좋습니다 . 그러나 사용자는 절대 새 값을 입력 할 수 없으므로 무한 루프에 걸리게됩니다.

아마도이 시도 :

running = True 

while running: 
    option = input("Please select one of the above options: ") 
    if option > 3: 
     print "Please try again" 
    elif option == 1: 
     print "happy" 
    elif option == 2: 
     print "average" 
    elif option == 3: 
     print "sad" 
    else: 
     print "done" 
     running = False 
+1

'while-true-break' 패턴은 파이썬에서 일반적입니다. 조건 체크 나 루프 실행 중 루프 종료가 발생할 때의 의도를 단순히 움직이는 것뿐입니다. – Makoto

+0

@Makoto 그러나 동시에, 제어 흐름과 다른 접근법에 대한 이해를 돕기 위해 프로그래밍의 초기 단계에서 '중단'을 남용하는 것을 막는 것이 상당히 표준입니다. 예를 들어, 중첩 루프에서 분리). 그래도 내 걸릴거야. –

2

이것은 내가 그것을 다른 사람의 루프 : 내부 안 가까운하지만 경우와 예상 result.You을 달성하기 위해 수정하는 것이 방법이다.

print """ 
How do you feel today? 
1 = happy 
2 = average 
3 = sad 
0 = exit program 
""" 

option = input("Please select one of the above options: ") 
while option >3: 
    print "Please try again" 
    option = input("Please select one of the above options: ") 

if option == 1: 
    print "happy" 
elif option == 2: 
    print "average" 
elif option == 3: 
    print "sad" 
else: 
    print "done" 

참고 파이썬 2 input` 보안에 관한 나쁜 생각`사용하여 언제든지

감사 벤