**已关闭。**此问题需要debugging details。目前不接受回答。
编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答问题。
9天前关闭
Improve this question的
每次我运行我的代码并使用%时,我要么得到一个个位数的错误答案,要么代码就停止了。如果我尝试执行“quit”并得到一个个位数的答案,那么打印功能可以工作,但带有回溯,因为它是以xquit的形式执行的,而不是quit。See the image for a better understanding
import re
print("Cal_C")
print("Type 'quit' to exit the Cal_C\\n")
previous = 0
run = True
def calculate():
global run
global previous
if previous == 0:
value = input("Enter the value:")
else:
value = input(str(previous))
if value == 'quit':
print("Shutting down...now.")
run = False
else:
value = re.sub("[a-zA-Z,.:()]", '', value)
if previous == 0:
previous = eval(value)
else:
previous = eval(str(previous) + value)
while run:
calculate()
字符串
2条答案
按热度按时间3okqufwl1#
这里有几个问题。如果计算结果为0,您的代码认为您正在重新开始。我建议使用另一个值。
函数应该返回一个布尔值,告诉调用者是否继续。
字符串
一个更好的设计是让
calculate
接受当前累加器作为参数,并返回更新后的值。这样,就不需要全局变量了。calculate
是一个很好的独立函数,没有副作用,甚至可以在其他情况下重用。型
inkz8wg92#
你在这里欺骗了自己:
字符串
因为应用程序 * 现在 * 没有 * 关闭 *,它首先继续执行函数。这最终导致它在这里:
型
这将产生你看到的错误,因为
previous
的值是2
,而value
的值是"quit"
,所以你试图计算代码2quit
,产生了一个错误。要关闭应用程序,首先应该退出函数:
型