在while循环退出后,如何继续python程序?

时间:2017-10-31 16:45:31

标签: python

我有一个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的了解非常有限,仍在努力学习。

3 个答案:

答案 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 !")