使用Python 3中的“Break”控制流程

时间:2015-02-18 21:20:39

标签: python controls break flow

第一次来这里。在此先感谢您的帮助。我成功地满足了下面问题的要求。但是,我正在努力学习使用" break"声明优雅地终止循环而不是让程序崩溃。

听起来很简单,在使用" break"时返回错误声明。

也许是因为" eval"提及,用于输入数值而不是字符串,如" QUIT"打破循环?

"编写一个交互式Python计算器程序。该程序应允许用户键入数学表达式,然后打印表达式的值。包含一个循环,以便用户可以执行许多计算。注意:要提前退出,用户可以通过键入错误的表达式或只是关闭运行计算器程序的程序窗口来使程序崩溃。您将在后面的章节中学习更好的方法来终止交互式程序。 #34;

def main():
    print("This program allows you to get the result of a math expression!")
    while True:
        expr = eval(input("Enter a mathematical expression: "))
        print ("The result of the math expression is {}".format(expr))
        if expr == "QUIT":
            break
main()

思想?

更新

正如Scott Hunter在下面所建议的那样,我对代码进行了以下更改,并且它运行良好。 " eval"声明没有认出字符串" QUIT" as" eval"用于评估数值。谢谢斯科特。

以下是更新后的代码:

def main():
    print("This program allows you to get the result of a math expression!")
    while True:
        expr =(input("Enter a mathematical expression: "))
        if expr == "QUIT":
            break
        else:
            expr = eval(expr)
        print ("The result of the math expression is {}".format(expr))
main()

2 个答案:

答案 0 :(得分:2)

您应该等到使用eval,直到您知道用户没有输入QUIT;像这样的东西:

while True:
    expr = input(...)
    if expire == "QUIT":
        break
    expr = eval(expr)
    print( ... )

答案 1 :(得分:0)

break控件不会结束程序,而是“突破”您所处的任何代码级别:

i = 1
while True:
    i += 1
    if i > 10:
        break
print('Hello!')

上面代码中的break将结束while循环的执行。它不会结束整个程序,因此您仍会在控制台中看到'Hello'。如果要完全结束过程,请使用return。如果您要尝试退出整个脚本,可以导入sys并使用sys.exit()