Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获取eval语句以浮点数的形式运行数字_Python_User Interface_Floating Point_Wxpython_Eval - Fatal编程技术网

Python 如何获取eval语句以浮点数的形式运行数字

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

我已经创建了一个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.SetValue(ans)

将以下内容放在文件的顶部:

from __future__ import division
这重新定义了
/
的含义,因此它始终是浮点除法。(整数除法为
/


有关这意味着什么的更多信息,请参阅。

您可以尝试将输入更改为:

5/6.0

上述操作将结果转换为浮点类型

只需在程序开始时添加以下行:

来自未来进口部门


这将使除法在Python2.x中的行为与在Python3.x中的行为相同:如果整数运算符将导致十进制数,则自动转换为浮点。

ya我知道这一点,但我不希望每次需要十进制答案时都必须这样做。在这种情况下,他为什么要小心使用
eval
?这是一个桌面程序。任何能够键入
\uuuu import\uuuu(“shutil”).rmtree(“/”)
的人都可以打开一个命令提示符,并在那里执行一个同样具有破坏性的命令。除非他正在为信息亭编写应用程序,但这似乎不太可能。