0

如果用户到达程序的末尾,我希望他们被提示一个问题,询问他们是否想再试一次。如果他们回答是,我想重新运行该程序。

import random
print("The purpose of this exercise is to enter a number of coin values") 
print("that add up to a displayed target value.\n") 
print("Enter coins values as 1-penny, 5-nickel, 10-dime,and 25-quarter.") 
print("Hit return after the last entered coin value.")
print("--------------------") 
total = 0 
final_coin = random.randint(1, 99)
print("Enter coins that add up to", final_coin, "cents, on per line") 
user_input = int(input("Enter first coin: "))
total = total + user_input

if user_input != 1 and user_input!=5 and user_input!=10 and user_input!=25:
   print("invalid input")

while total != final_coin:
    user_input = int(input("Enter next coin: "))
    total = total + user_input

if total > final_coin:
    print("Sorry - total amount exceeds", (final_coin)) 

if total < final_coin:
    print("Sorry - you only entered",(total))

if total== final_coin: 
    print("correct")
4

2 回答 2

3

您可以将整个程序包含在另一个 while 循环中,询问用户是否要重试。

while True:
  # your entire program goes here

  try_again = int(input("Press 1 to try again, 0 to exit. "))
  if try_again == 0:
      break # break out of the outer while loop
于 2013-10-09T21:44:56.603 回答
1

这是对已接受答案的增量改进:

按原样使用,来自用户的任何无效输入(例如空 str,或字母“g”等)将在调用 int() 函数时引发异常。

对此类问题的一个简单解决方案是使用 try/except-尝试执行任务/代码,如果它有效 - 很好,否则(除了这里就像 else:) 做其他事情。

在可能尝试的三种方法中,我认为下面的第一种是最简单的,不会使您的程序崩溃。

选项 1:只需使用通过一个选项输入的字符串值即可再次访问

while True:
    # your entire program goes here
    
    try_again = input("Press 1 to try again, any other key to exit. ")
    if try_again != "1":
        break # break out of the outer while loop

选项 2:如果使用 int(),防止错误的用户输入

while True:
    # your entire program goes here

    try_again = input("Press 1 to try again, 0 to exit. ")
    try:
        try_again = int(try_again)  # non-numeric input from user could otherwise crash at this point
        if try_again == 0:
            break # break out of this while loop
    except:
        print("Non number entered")
    

选项 3:循环直到用户输入两个有效选项之一

while True:
    # your entire program goes here
    
    try_again = ""
    # Loop until users opts to go again or quit
    while (try_again != "1") or (try_again != "0"):
        try_again = input("Press 1 to try again, 0 to exit. ")
        if try_again in ["1", "0"]:
            continue  # a valid entry found
        else:
            print("Invalid input- Press 1 to try again, 0 to exit.")
    # at this point, try_again must be "0" or "1"
    if try_again == "0":
        break
于 2018-12-14T19:05:16.353 回答