繁体   English   中英

如何让用户重用python计算器中先前的计算结果

[英]How to let the user reuse a result from previous computation in a python calculator

我是python的新手,所以我对此不太了解。 我做了一个计算器,我希望它接受:

ans()

输入。 当前,如果没有[0-9 * /-+]以外的内容,有一部分可以阻止程序执行输入,因此不会崩溃。 我该怎么做

ans()

代表最后输入的方程式的输出,因此我可以输入以下内容:

>> 8*8 #last input
64 #last output
>> ans()*2 #current input
128 # current output

希望我能正确解释所有内容,这是我的代码:

valid_chars = "0123456789-+/* \n";
    while True:
    x = "x="
    y = input(" >> ")
    x += y
    if any(c not in valid_chars for c in y):
        print("WARNING: Invalid Equation")
        continue
    try:
        exec(x)
    except (SyntaxError, ZeroDivisionError):
        print ("WARNING: Invalid Equation")
    else:
        print(x)

更新:我添加了几行,但无法运行:

valid_chars = "0123456789-+/* \n";
while True:
    x = "x="
    y = input(" >> ")
    x += y
    def ans():
        return _
    def ans():
        try:
            return _
    except NameError:
        return 0 # appropriate value
    if any(c not in valid_chars for c in y):
        print("WARNING: Invalid Equation")
        continue
    try:
        exec(x)
    except (SyntaxError, ZeroDivisionError):
        print ("WARNING: Invalid Equation")
    else:
        print(x)

错误:NameError除外的“意外缩进”

我做错了什么,该如何解决? 谢谢

更新:

好吧,我修复了它:

valid_chars = "0123456789-+/*ans() \n"
while True:
    x = "x="
    y = input(" >> ")
    x += y
    def ans():
        return z
    def ans():
        try:
            return z
    except NameError:
        return 0 # appropriate value
    if any(c not in valid_chars for c in y):
        print("WARNING: Invalid Equation")
        continue
    try:
        exec(x)
    except (SyntaxError, ZeroDivisionError):
        print ("WARNING: Invalid Equation")
    else:
        z = x
        print(x)

刚刚添加了

z = x

并用z更改“ _”

谢谢!

def ans():
        try:
            return _
    except NameError:
        return 0 # appropriate value

您的尝试和除外需要具有相同的缩进。 这样使用

def ans():
    try:
        return _
    except NameError:
        return 0 # appropriate value
valid_chars = list("0123456789-+/* \n")
while True:
    x = "ans = "
    y = raw_input(" >> ")
    x += y
    if any(c not in valid_chars for c in y.replace('ans','')):
        print("WARNING: Invalid Equation")
        continue
    try:
        exec(x)
    except (SyntaxError, ZeroDivisionError):
        print ("WARNING: Invalid Equation")
    except NameError:
        if y == 'ans':
            print("ans undefined")
        else:
            raise
    else:
        print(ans)

暂无
暂无

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

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