Python 如何获取eval语句以浮点数的形式运行数字
我已经创建了一个GUI计算器(包括一个屏幕截图),当按下一个按钮时,它会将文本添加到textctrl中,以便向用户显示方程式。当用户按enter键时,它会获取文本并使用eval运行它,然后使用SetValue打印,但是如果我在texctrl中运行一个问题,比如5/6,它会显示为0,我如何使它成为浮点Python 如何获取eval语句以浮点数的形式运行数字,python,user-interface,floating-point,wxpython,eval,Python,User Interface,Floating Point,Wxpython,Eval,我已经创建了一个GUI计算器(包括一个屏幕截图),当按下一个按钮时,它会将文本添加到textctrl中,以便向用户显示方程式。当用户按enter键时,它会获取文本并使用eval运行它,然后使用SetValue打印,但是如果我在texctrl中运行一个问题,比如5/6,它会显示为0,我如何使它成为浮点 def eenter(self,e): a=self.box.GetValue() answer=eval(a) ans=str(answer) self.box.S
def eenter(self,e):
a=self.box.GetValue()
answer=eval(a)
ans=str(answer)
self.box.SetValue(ans)
将以下内容放在文件的顶部:
from __future__ import division
这重新定义了/
的含义,因此它始终是浮点除法。(整数除法为/
)
有关这意味着什么的更多信息,请参阅。您可以尝试将输入更改为:
5/6.0
上述操作将结果转换为浮点类型只需在程序开始时添加以下行:
来自未来进口部门
这将使除法在Python2.x中的行为与在Python3.x中的行为相同:如果整数运算符将导致十进制数,则自动转换为浮点。ya我知道这一点,但我不希望每次需要十进制答案时都必须这样做。在这种情况下,他为什么要小心使用
eval
?这是一个桌面程序。任何能够键入\uuuu import\uuuu(“shutil”).rmtree(“/”)
的人都可以打开一个命令提示符,并在那里执行一个同样具有破坏性的命令。除非他正在为信息亭编写应用程序,但这似乎不太可能。