如何使 eval 寄存器整数(例如 05 和 04)有效?

How do I make eval register integers such as 05 and 04 as valid?

我正在使用 tkinter 制作一个 GUI 计算器,运行 遇到了一个我似乎无法解决的问题。该程序的部分要求是计算器可以使用诸如“02+04”之类的输入,这将 return“6”。当我尝试将此计算输入 Entry 字段时,出现错误

SyntaxError: invalid token

我已经尝试查找如何绕过 and/or 解决此错误,但到目前为止还没有成功。任何有关如何使这项工作的帮助将不胜感激!

使用 eval 是不受欢迎的,正如评论和网络上的许多地方所指出的那样。即使对输入进行了清理,它也是一个设计拐杖。

话虽如此,听起来您有义务这样做,因此您可以使用此正则表达式替换您计划 eval:[=15= 的表达式中数字的前导零]

self.answer = eval(re.sub(r"((?<=^)|(?<=[^\.\d]))0+(\d+)", r"", self.equation.get()))

正则表达式分解:

(                             # begin capturing group 
 (?<=^)                       # positive lookbehind to beginning of line
       |                      # OR
        (?<=[^\.\d])          # positive lookbehind to non-digit, non-period character
                    )         # end capturing group 
                     0+       # literal 0 one or more times
                       (\d+)  # one or more digits (capturing group )

不要忘记在脚本顶部 import re