我有一个python3程序,它根据用户的输入猜出个人的姓氏。但是我想出了如果用户现在回答如何打破,但是当用户说是,它只是使用相同的初始问题再次重新进入循环。
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)
演示 - 如果用户回答“是”'
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 :
等
所以基本上我希望程序退出no,但继续对下一个问题是"请告诉我姓氏中的第一个字母?"
有什么想法吗?
我在接到一些建议之后,我可以使用while循环,但问题是,我没有把它弄好。
请以不那么技术性的方式回答,因为我对python的了解非常有限,仍在努力学习。
答案 0 :(得分:1)
我一开始误解了这个问题。当用户说“是”时,您实际上需要打破 while
循环,因此您可以继续第二个问题。当他说“不”时,使用 exit
就可以了,只要记住它会退出 整个程序 ,所以如果你想要在他拒绝之后做其他事情,最好使用return
并将它们放入函数中。
您的代码应该或多或少如下:
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.
随时询问您对该代码的任何疑问:)
答案 1 :(得分:0)
正如CoryKramer在评论中指出的那样,使用break而不是退出。 Exit是一个python函数,它作为一个整体退出进程,因此它会关闭解释器本身。
Break将关闭它所属的最近的循环。因此,如果你有两个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
只要用户继续输入yes,这将保持循环。
答案 2 :(得分: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 !")