满足条件时关闭程序

时间:2017-09-08 16:00:33

标签: python while-loop

我刚刚开始,无法解决这个问题。

我正在写一个程序,在学校为我做一些简单的计算。

通过输入从1到X的简单数字,可以访问不同的计算。每个数字都会调用一个函数来进行计算。

我的问题是: 我希望如果用户在提示输入数字时输入空字符串,程序将要求用户在关闭之前重新输入一定数量的数字。这是我的代码:

def pick_procedure():
    procedure = raw_input("> ")

    if not procedure:
        counter = 0
        print "Enter a value. "

        while counter <4:
            counter = counter + 1
            main()
            if counter == 4:
                break

def main():
    print "\nStudy helper 1.0.\n"
    print """Procedure list:

    1.Area of circle.
    2. Circumference of a circle.

    Please pick a procedure: """
    pick_procedure()

main()

无论输入空字符串多少次,程序都不会关闭。

如何正确清洁?

2 个答案:

答案 0 :(得分:1)

正如您所说,您需要重新组织代码:

def pick_procedure(valid_choices):
    print "Enter a value. "

    for _ in range(4):    # prompt for a choice up to 4 times
        choice = raw_input("> ")

        if choice in valid_choices:
            return choice

    return None  # A valid choice was not entered


def main():
    print "\nStudy helper 1.0.\n"
    choice = 1

    while choice:
        print """Procedure list: 

1. Area of circle.

2. Circumference of a circle.

Please pick a procedure: """ 

        choice = pick_procedure(["1", "2"])

        if choice:
            print "Doing choice", choice

main()

以下方法使用while choice循环来保持提示是否输入了有效选项。如果没有输入4次选项,pick_procedure()函数将返回None,导致while循环干净地退出。如果输入了有效选项,则返回该选项。

我还传递了对函数的有效响应列表,这样就可以通过传递不同的有效响应列表将函数用于其他问题。

答案 1 :(得分:0)

你创造了一个恶性循环。

第一次该过程为false时,pick_procedure再次调用main,然后再调用main调用pick_procedure。它继续递归。

如果您只想在触发事件时完成程序,可以使用sys.exit(0)并解决问题。