2012-01-04 51 views
4

我已經創建了一個GUI計算器(包括一個屏幕截圖),當按下按鈕時,它將文本添加到文本控件中,以便將公式顯示給用戶。當用戶按下輸入需要的文本,並運行它usesing EVAL然後使用的SetValue打印,但如果我在texctrl運行問題像5/6它出來爲0如何使的浮標我如何得到一個eval語句來運行浮點數

def eenter(self,e): 
    a=self.box.GetValue() 
    answer=eval(a) 
    ans=str(answer) 
    self.box.SetValue(ans) 
+0

小心那個'eval' ... – wim 2012-01-04 04:20:33

+1

爲什麼在這種情況下他應該小心'eval'?這是一個桌面程序。任何能夠輸入'__import __(「shutil」)。rmtree(「/」)'的人都可以使用opena命令提示符並在那裏輸入同樣具有破壞性的命令。除非他正在爲一個自助服務終端編寫應用程序,但似乎不太可能。 – jsbueno 2012-01-04 10:23:19

回答

2

在你的程序的啓動只需添加,下面一行:

from __future__ import division

這將使分區在Python 2.x中的行爲與在Python 3.x中的行爲一樣:如果整數操作自動轉換爲float rs會產生一個十進制數字。

5

你的文件的頂部的位置:

from __future__ import division 

這重新定義/因此它始終浮點除法的意義。 (整數除法是//。)

有關更改內容的更多信息,請參閱PEP 238

+0

謝謝效果很好 – user1108980 2012-01-04 04:41:33

1

你可以試着改變你的輸入這樣的:

5/6.0 

以上將結果轉換爲浮動型

+0

雅我知道,但我不想每次都需要做小數回答 – user1108980 2012-01-04 04:29:23

相關問題