繁体   English   中英

在Python 3中使用“中断”控制流

[英]Using the “Break” Control Flow in Python 3

第一次来这里。 先谢谢您的帮助。 我已成功满足以下问题的要求。 但是,我试图学习使用“ break”语句优雅地终止循环,而不是使程序崩溃。

听起来很简单,但是在使用“ break”语句时却返回了错误。

也许是因为提到了“ eval”,它用于输入数值而不是字符串(例如“ QUIT”)来打破循环?

“编写一个交互式Python计算器程序。该程序应允许用户键入数学表达式,然后打印该表达式的值。包括一个循环,以便用户可以执行许多计算。注意:要提早退出,用户可以通过键入错误的表达式或简单地关闭计算器程序正在运行的程序的窗口,可以使程序崩溃。在后面的章节中,您将学到更好的终止交互式程序的方法。”

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()

思考?

UPDATE

正如下面的Scott Hunter所建议的那样,我对代码进行了以下更改,并且可以完美地工作。 “ eval”语句未识别字符串“ QUIT”,因为“ 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()

您应该等待使用eval直到您知道用户尚未输入QUIT为止; 像这样的东西:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM