【发布时间】:2015-02-18 21:20:38
【问题描述】:
第一次来。在此先感谢您的帮助。我成功满足了以下问题的要求。但是,我正在尝试学习使用“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()
想法?
更新
正如下面的 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')给你一个NameError- 你能提供完整的回溯吗? -
函数体需要缩进。
-
如果您要在其中输入 '"QUIT"' ——也就是说,在输入行上,输入双引号 Q U I T 双引号——我希望这个版本可以工作。问题是它试图将字符串 'QUIT' 视为 Python,这是行不通的。
-
你可以使用
quit()。这应该可以完成工作
标签: python controls break flow