【问题标题】:How do I prompt users to exit and restart program if they say no [duplicate]如果他们说不,我如何提示用户退出并重新启动程序[重复]
【发布时间】:2018-09-26 21:06:35
【问题描述】:

有人可以帮忙说明如何提示用户退出,如果他们拒绝,则返回并重新运行程序?我对此感到非常头疼,而互联网也没有帮助。

这是我的代码:

print("Hello, this program will ask for two numbers, then show the product 
of those numbers that many times")

value = input("Please enter number")

value = int(value)

value2 = input("Please enter a second number")

value2 = int(value2)

for i in range(value*value2):
    print(value*value2)

    while True:
        answer = input("Do you wih to exit? Enter Yes or No:")
        if answer in ('No', 'Yes'):
            break
        print ("Invalid input.")
    if answer == 'No':
        continue
    else:
        print ("Goodbye")
        break

它只是乘法,然后显示和本身一样多次,但我不知道如何提示用户退出,如果他们说不,则再次运行程序。我听说过将整个代码放在一个循环中,并且我尝试过,但无济于事。我能得到一些帮助吗?

【问题讨论】:

  • 澄清一下,当您说“显示与自身一样多次”时,应该将 5、6 打印 30 到控制台窗口 30 次?
  • 是的,基本上。

标签: python python-3.7


【解决方案1】:

根据所写的答案,但未编写函数: 这里的关键是您需要循环直到用户输入“是”。你的while 循环永远不会是假的,所以你会永远提示。这是另一个解决方案(尽管@Ricky Kim 有一个更 Pythonic 的答案)

answer=""
while answer!= "yes":
    print("Hello, this program will ask for two numbers, then show the product \
    of those numbers that many times")

    value = input("Please enter number")

    value = int(value)

    value2 = input("Please enter a second number")

    value2 = int(value2)

    for i in range(value*value2):
        print(value*value2)
    #use lower so that the user can enter "Yes" or "yes"
    answer = str.lower(input("Do you wih to exit? Enter Yes or No:"))
print ("Goodbye")

【讨论】:

    【解决方案2】:

    您可以将其设为递归函数,并在用户回答否时执行循环。

    例如:

    def ask():
        print("Hello, this program will ask for two numbers, then show the product of those numbers that many times")
    
        value = input("Please enter number")
    
        value = int(value)
    
        value2 = input("Please enter a second number")
    
        value2 = int(value2)
    
        for i in range(value * value2):
            print(value * value2)
        answer = input("Do you wih to exit? Enter Yes or No:")
        if answer not in ('No', 'Yes'):
            print("Invalid input.")
        if answer == 'No':
            ask()
        else:
            print("Goodbye")
    ask()
    

    【讨论】:

    • 虽然这是完全可行的,但递归限制总是一个小警告(当然取决于预期的使用次数)。
    • 当你的功能实际上是一个while 概念时,递归不是一个好的选择。
    • @Prune 你是对的。在我的编辑中删除了while
    • 您仍在使用递归来运行 while 类型的想法。将调用堆栈推得更深并维护先前调用的数据没有任何优势。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多