2015-09-04 31 views
0
def playAgain(): 
    while True: 
     try: 
      replay = input("Do you want to play again? ").lower() #Asking user to play again 
     except ValueError: 
      print("Sorry, Invalid Entry") #If response invalid, will ask again 
      continue 
     if replay in ("yes","y","true","t"): 
      main() 
     elif replay in ("no","n","false","f"): 
      print ("Goodbye") 
      return 
     else: #If input is invalid will ask again 
      print("Invalid entry, Please enter yes or no") 

def main(): 
    print ("Hello") 
    playAgain() 

main() 

对于我的作业,我需要进行测验。我已经完成了所有工作,接受上面可以看到的再次播放功能。我无法退出程序。如果我第一次输入没有问你是否要再次玩,它会正确退出。我遇到的问题是,如果我第一次输入yes,然后第二次输入yes,则不会退出。程序会再次问我这个问题,如果我按否,它会正确退出。我的python再次播放功能不起作用

我知道解决方案可能非常明显,但我似乎无法修复它。

回答

0

在您的代码中,main调用playAgain。然后,如果您选择再次播放,则playAgain递归调用main

main -> playAgain -> main -> playAgain 
           ^^^ 

如果return在这里,只有第二playAgain退出,则程序返回到主循环在第一playAgain

为了解决这个问题,添加return退出主循环,当用户选择播放一次,以及:

if replay in ("yes","y","true","t"): 
     main() 
     return # here 
0

对于Python 2.7

def playAgain(): 
    while True: 
     try: 
      replay = raw_input("Do you want to play again? ").lower() #Asking user to play again 
      if replay in ("yes","y","true","t"): 
       main() 
       return 
      elif replay in ("no","n","false","f"): 
       print ("Goodbye") 
       return 
      else: #If input is invalid will ask again 
       print("Invalid entry, Please enter yes or no") 
     except ValueError: 
      print("Sorry, Invalid Entry") #If response invalid, will ask again 

def main(): 
    print ("Hello") 
    playAgain() 

main()