2017-10-31 4 views
0

나는 사용자의 입력을 기반으로 개인의 성을 추측하는 python3 프로그램을 가지고있다. 하지만 사용자가 지금 대답하면 깨는 방법을 알아 냈습니다.하지만 사용자가 예라고 말하면 다시 처음 동일한 질문을 반복합니다.while 루프가 종료 된 후 어떻게 파이썬 프로그램을 계속 진행합니까?

while True: 
    answer = input('Do you want me to guess your name? yes/no :') 
    if answer.lower() == 'no': 
     print("Great") 
    else: 
     time.sleep(2) 
     exit('Shame, thank you for playing') 

lastname = input('Please tell me the first letter in your surname?').lower() 
time.sleep(2) 

DEMO - 사용자 응답 '예'

Do you want me to guess your name? yes/no : 
Great 
Do you want me to guess your name? yes/no : 
Great 
Do you want me to guess your name? yes/no : 

그래서 기본적으로 내가 원하는 프로그램이 없음에 종료되지만, 다음 질문에 예에 계속 경우 "성의 첫번째 편지를 알려주시겠습니까?"

아이디어가 있으십니까?

나는 여기에 몇 가지 제안을 들었을 때 while 루프를 사용할 수 있었지만 질문은 그대로 두었습니다.

파이썬에 대한 지식이 매우 제한되어 있지만 여전히 배우려고 노력하는만큼 그리 기술적 인 방법으로 대답하십시오.

+3

는 exit'이 더 나은이 경우'break'를 사용하거나'while' 루프 – CoryKramer

+0

의 상태를 변경 진정한 동안 피해야한다 ... 중 하나를 사용 휴식 대신 출구로 나'사용하지 마십시오 어떤 값 으로든 '응답'을 초기화하고 루프를 종료하기위한 조건으로 사용하십시오. –

답변

1

처음에는이 문제를 오해했습니다. 사용자가 예라고 말하면 while 루프를 깨뜨려야하므로 2 번째 질문으로 진행할 수 있습니다. 그는 당신이 그가 더 말한다 후 다른 무언가를하고 싶다면 return를 사용하고 넣어 더 좋을 수도,의 전체 프로그램을 종료합니다 기억, 아니 말할 때와 exit을 사용하는 것은 괜찮습니다 함수로 변환합니다.

코드는 더 많거나 적은이 같은해야한다 :

import time 
while True: 
    answer = input('Do you want me to guess your name? yes/no :') 
    if answer.lower() == 'yes': 
     print("Great") 
     break # This will break the actual loop, so it can pass to next one. 
    elif answer.lower() == 'no': 
     # I recommend printing before so if it's running on a terminal 
     # it doesn't close instantly. 
     print('Shame, thank you for playing') 
     time.sleep(2) 
     exit() 
    # I suggest adding this else because users don't always write what we ask :P 
    else: 
     print('ERROR: Please insert a valid command.') 
     pass # this will make it loop again, until he gives a valid answer. 

while True: 
    # code of your next question :P repeat proccess. 

당신이 코드 :에 대해 가지고있는 질문을 자유롭게 CoryKramer이 코멘트에 지적

+0

elif 문을 제거한 경우에만 작동합니다. –

+0

무엇 때문에 elif 문을 실행할 수 없습니까? 어쩌면 전에 ** 수입 시간 **을하지 않았습니까? – oScarDiAnno

+0

처음에는 그랬지만, else print pass 문을 사용하면 대답이 사실 일 때까지 반복됩니다. 멋지고 멋쟁이여, 나는 이것을 다른 퀴즈 유형의 게임에서도 사용할 수 있지만 게임을 종료하려면 어떻게해야합니까? –

0

, 대신 휴식 사용 출구. Exit는 프로세스 전체를 종료하는 파이썬 함수이므로 인터프리터 자체를 종료합니다.

중단은 그것이 속하는 가장 가까운 루프를 닫습니다. 따라서 두 개의 while 루프가있는 경우 하나는 다른 루프 안에 씁니다. 중단은 내부 while 루프 만 닫습니다. 일반적으로 코드에서

는 사용자가 예 입력 유지로이만큼 반복 유지합니다이

while True: 
    answer = input('Do you want me to guess your name? yes/no :') 
    if answer.lower() == 'yes': 
     print("Great") 
     lastname = input('Please tell me the first letter in your surname?').lower() 
     time.sleep(2) 
    else: 
     time.sleep(2) 
     print("Thank you for playing!") 
     break 

처럼 뭔가를 갈 것입니다.

0

루프 상태를 제어해야하는 무한 while 루프가 필요한 경우 또한 SurnameFunc를 만들었습니다. 별도의 기능을 사용하면 큰 프로젝트에서 더 쉽게 읽을 수 있습니다.

def SurnameFunc(): 
    return "Test Surname ..." 

State= 0 
lastname_tip = "" 
while(True): 
    if(State== 0): 
    answer = input('Do you want me to guess your name? yes/no :') 
    if(answer == 'no') : 
     print ("You pressed No ! - Terminating Program ...") 
     break 
    else: 
     State = 1 
    elif(State == 1): 
    lastname_tip = input('Please tell me the first letter in your surname?').lower() 
    State = 2 
    elif(State == 2): 
    print ("Your Surname is ..." + SurnameFunc()) 
    State = 0 


print ("Program Terminated !") 
+0

퀴즈 유형의 게임에서 작동 할 수 있다고 생각하지만 상태는 무엇을합니까? –

관련 문제