本文目錄一覽:
如何用python編寫計算器
我想你的需求應該是一個圖形界面的程序,而不是簡單的在命令行上輸入。
那麼,要做的第一件事就是選擇一個圖形界面套件。可以使用原生的TK,也可以用跨平台性能很好的wxPython,或者是整體結構很像MFC的PyWin32。至於pyGTK,pyQT,都是可選的,但是相對來說文檔比較少,學習不便。
選定圖形庫之後,就可以看文檔範例了。計算器總體是比較簡單的。我記得WxPython的demo里直接就有一個簡單計算器,您可以直接取來用。
python計算器
python計算器實現:
wx.TextCtrl(文本輸入控件),這個作為計算器的顯示屏,點擊數字時用AppendText方法將數字添加至文本末尾,要取出數字時用GetValue方法,點擊運算符時要將文本框中的數字清空(先存儲)用Clear方法然後還有將操作符保存,點擊等號後要將第二個操作數存儲,然後用int方法將字符串轉換為數字,計算後用SetValue方法將結果送入文本框,具體代碼如下:
import wx
# begin wxGlade: extracode
# end wxGlade
class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame.__init__
kwds[“style”] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.text_ctrl_1 = wx.TextCtrl(self, -1, “”,style=wx.TE_READONLY)
self.button_37 = wx.Button(self, -1, “1”)
self.button_38 = wx.Button(self, -1, “2”)
self.button_39 = wx.Button(self, -1, “3”)
self.button_40 = wx.Button(self, -1, “+”)
self.button_41 = wx.Button(self, -1, “4”)
self.button_42 = wx.Button(self, -1, “5”)
self.button_43 = wx.Button(self, -1, “6”)
self.button_44 = wx.Button(self, -1, “-“)
self.button_46 = wx.Button(self, -1, “7”)
self.button_45 = wx.Button(self, -1, “8”)
self.button_47 = wx.Button(self, -1, “9”)
self.button_48 = wx.Button(self, -1, “x”)
self.button_49 = wx.Button(self, -1, “C”)
self.button_50 = wx.Button(self, -1, “0”)
self.button_51 = wx.Button(self, -1, “=”)
self.button_52 = wx.Button(self, -1, “/”)
self.__set_properties()
self.__do_layout()
self.Bind(wx.EVT_BUTTON, self.bu1, self.button_37)
self.Bind(wx.EVT_BUTTON, self.bu2, self.button_38)
self.Bind(wx.EVT_BUTTON, self.bu3, self.button_39)
self.Bind(wx.EVT_BUTTON, self.bu_plus, self.button_40)
self.Bind(wx.EVT_BUTTON, self.bu4, self.button_41)
self.Bind(wx.EVT_BUTTON, self.bu5, self.button_42)
self.Bind(wx.EVT_BUTTON, self.bu6, self.button_43)
self.Bind(wx.EVT_BUTTON, self.bu_min, self.button_44)
self.Bind(wx.EVT_BUTTON, self.bu7, self.button_46)
self.Bind(wx.EVT_BUTTON, self.bu8, self.button_45)
self.Bind(wx.EVT_BUTTON, self.bu9, self.button_47)
self.Bind(wx.EVT_BUTTON, self.bu_mul, self.button_48)
self.Bind(wx.EVT_BUTTON, self.bu_clear, self.button_49)
self.Bind(wx.EVT_BUTTON, self.bu0, self.button_50)
self.Bind(wx.EVT_BUTTON, self.bu_result, self.button_51)
self.Bind(wx.EVT_BUTTON, self.bu_chu, self.button_52)
# end wxGlade
self.Show(True)
def __set_properties(self):
# begin wxGlade: MyFrame.__set_properties
self.SetTitle(“Python Calculater by CYG”)
self.text_ctrl_1.SetMinSize((400, 50))
self.button_37.SetMinSize((100, 50))
self.button_38.SetMinSize((100, 50))
self.button_39.SetMinSize((100, 50))
self.button_40.SetMinSize((100, 50))
self.button_41.SetMinSize((100, 50))
self.button_42.SetMinSize((100, 50))
self.button_43.SetMinSize((100, 50))
self.button_44.SetMinSize((100, 50))
self.button_46.SetMinSize((100, 50))
self.button_45.SetMinSize((100, 50))
self.button_47.SetMinSize((100, 50))
self.button_48.SetMinSize((100, 50))
self.button_49.SetMinSize((100, 50))
self.button_50.SetMinSize((100, 50))
self.button_51.SetMinSize((100, 50))
self.button_52.SetMinSize((100, 50))
# end wxGlade
def __do_layout(self):
# begin wxGlade: MyFrame.__do_layout
sizer_2 = wx.BoxSizer(wx.VERTICAL)
sizer_3 = wx.BoxSizer(wx.VERTICAL)
grid_sizer_1 = wx.GridSizer(4, 4, 0, 0)
sizer_3.Add(self.text_ctrl_1, 0, 0, 0)
grid_sizer_1.Add(self.button_37, 0, 0, 0)
grid_sizer_1.Add(self.button_38, 0, 0, 0)
grid_sizer_1.Add(self.button_39, 0, 0, 0)
grid_sizer_1.Add(self.button_40, 0, 0, 0)
grid_sizer_1.Add(self.button_41, 0, 0, 0)
grid_sizer_1.Add(self.button_42, 0, 0, 0)
grid_sizer_1.Add(self.button_43, 0, 0, 0)
grid_sizer_1.Add(self.button_44, 0, 0, 0)
grid_sizer_1.Add(self.button_46, 0, 0, 0)
grid_sizer_1.Add(self.button_45, 0, 0, 0)
grid_sizer_1.Add(self.button_47, 0, 0, 0)
grid_sizer_1.Add(self.button_48, 0, 0, 0)
grid_sizer_1.Add(self.button_49, 0, 0, 0)
grid_sizer_1.Add(self.button_50, 0, 0, 0)
grid_sizer_1.Add(self.button_51, 0, 0, 0)
grid_sizer_1.Add(self.button_52, 0, 0, 0)
sizer_3.Add(grid_sizer_1, 1, wx.EXPAND, 0)
sizer_2.Add(sizer_3, 1, wx.EXPAND, 0)
self.SetSizer(sizer_2)
sizer_2.Fit(self)
self.Layout()
# end wxGlade
def bu1(self, event): # wxGlade: MyFrame.event_handler
self.text_ctrl_1.AppendText(“1”)
event.Skip()
def bu2(self, event): # wxGlade: MyFrame.event_handler
self.text_ctrl_1.AppendText(“2”)
event.Skip()
def bu3(self, event): # wxGlade: MyFrame.event_handler
self.text_ctrl_1.AppendText(“3”)
event.Skip()
def bu_plus(self, event): # wxGlade: MyFrame.event_handler
self.num1=self.text_ctrl_1.GetValue()
self.op=”+”
self.text_ctrl_1.Clear()
event.Skip()
def bu4(self, event): # wxGlade: MyFrame.event_handler
self.text_ctrl_1.AppendText(“4”)
event.Skip()
def bu5(self, event): # wxGlade: MyFrame.event_handler
self.text_ctrl_1.AppendText(“5”)
event.Skip()
def bu6(self, event): # wxGlade: MyFrame.event_handler
self.text_ctrl_1.AppendText(“6”)
event.Skip()
def bu_min(self, event): # wxGlade: MyFrame.event_handler
self.num1=self.text_ctrl_1.GetValue()
self.op=”-“
self.text_ctrl_1.Clear()
event.Skip()
def bu7(self, event): # wxGlade: MyFrame.event_handler
self.text_ctrl_1.AppendText(“7”)
event.Skip()
def bu8(self, event): # wxGlade: MyFrame.event_handler
self.text_ctrl_1.AppendText(“8”)
event.Skip()
def bu9(self, event): # wxGlade: MyFrame.event_handler
self.text_ctrl_1.AppendText(“9”)
event.Skip()
def bu_mul(self, event): # wxGlade: MyFrame.event_handler
self.num1=self.text_ctrl_1.GetValue()
self.op=”x”
self.text_ctrl_1.Clear()
event.Skip()
def bu_clear(self, event): # wxGlade: MyFrame.event_handler
self.text_ctrl_1.Clear()
event.Skip()
def bu0(self, event): # wxGlade: MyFrame.event_handler
self.text_ctrl_1.AppendText(“0”)
event.Skip()
def bu_chu(self, event): # wxGlade: MyFrame.event_handler
self.num1=self.text_ctrl_1.GetValue()
self.op=”/”
self.text_ctrl_1.Clear()
event.Skip()
def bu_result(self, event): # wxGlade: MyFrame.event_handler
self.num2=self.text_ctrl_1.GetValue()
num1=int(self.num1)
num2=int(self.num2)
if self.op==”+”:
self.text_ctrl_1.SetValue(str(num1+num2))
elif self.op==”-“:
self.text_ctrl_1.SetValue(str(num1-num2))
elif self.op==”x”:
self.text_ctrl_1.SetValue(str(num1*num2))
elif self.op==”/”:
self.text_ctrl_1.SetValue(str(num1/num2))
event.Skip()
# end of class MyFrame
if __name__ == “__main__”:
app=wx.App(False)
myframe=MyFrame(None)
app.MainLoop()
將 Python 當做計算器使用方法?
我們來嘗試一些簡單的 Python 命令。啟動解釋器然後等待主提示符 出現(不需要很久)。
3.1.1. 數字
解釋器表現得就像一個簡單的計算器:可以向其錄入一些表達式,它會給出返回值。表達式語法很直白:運算符 +,-,* 和 / 與其它語言一樣(例如:Pascal 或 C);括號 (()) 用於分組。
整數(例如,2, 4, 20 )的類型是 int,帶有小數部分的數字(例如,5.0, 1.6)的類型是 float。在本教程的後面我們會看到更多關於數字類型的內容。
除法(/)永遠返回一個浮點數。如要使用 floor 除法 並且得到整數結果(丟掉任何小數部分),你可以使用 // 運算符;要計算餘數你可以使用 %
此變量對於用戶是只讀的。不要嘗試給它賦值 —— 你只會創建一個獨立的同名局部變量,它屏蔽了系統內置變量的魔術效果。
除了 int 和 float,Python 還支持其它數字類型,例如 Decimal 和 Fraction。Python 還內建支持 複數 ,使用後綴 j 或 J 表示虛數部分
用PYTHON2做個計算器,只要加減乘除
”’
命令行簡易計算器
”’
import sys
class culate():
#加法
def add(self,a,b):
return a+b
#減法
def mut(self,a,b):
return a-b
#乘法
def sub(self,a,b):
return a*b
#除法
def mod(self,a,b):
return a/b
c=culate()
while True:
n=input(“請選擇你的操作:\n1.加法\n2.減法\n3.乘法\n4.除法\n0.退出\n”)
if n==”0″:
break
elif n==”1″:
a=input(“請輸入第一個數:”)
b=input(“請輸入第二個數:”)
print(c.add(int(a),int(b)))
continue
elif n==”2″:
a=input(“請輸入第一個數:”)
b=input(“請輸入第二個數:”)
print(c.mut(int(a),int(b)))
continue
elif n==”3″:
a=input(“請輸入第一個數:”)
b=input(“請輸入第二個數:”)
print(c.sub(int(a),int(b)))
continue
elif n==”4″:
a=input(“請輸入第一個數:”)
b=input(“請輸入第二個數:”)
print(c.mod(int(a),int(b)))
continue
”’
結果:
請選擇你的操作:
1.加法
2.減法
3.乘法
4.除法
0.退出
3
請輸入第一個數:9
請輸入第二個數:3
27
請選擇你的操作:
1.加法
2.減法
3.乘法
4.除法
0.退出
4
請輸入第一個數:9
請輸入第二個數:3
3.0
請選擇你的操作:
1.加法
2.減法
3.乘法
4.除法
0.退出
”’
如何運用Python編寫簡易計算器
import time
print(“計算器”)
print(“+等於加法模式 -等於減法模式 *等於乘法模式 /等於除法模式”)
while 2 1:
try:
print(“請輸入+,-,*或/”)
a = input()
if a == “+”:
print(“請輸入第1個加數”)
b = input()
print(“請輸入第2個加數”)
c = input()
print(“計算中”)
time.sleep(0.3)
j = float(b) + float(c)
print(“等於”+str(j))
elif a == “-“:
print(“請輸入被減數”)
b = input()
print(“請輸入減數”)
c = input()
print(“計算中”)
time.sleep(0.3)
j = float(b) – float(c)
print(“等於”+str(j))
elif a == “*”:
print(“請輸入第1個因數”)
b = input()
print(“請輸入第2個因數”)
c = input()
print(“計算中”)
time.sleep(0.3)
j = float(b) * float(c)
print(“等於”+str(j))
elif a == “/”:
print(“……等於餘數模式 .等於小數模式”)
print(“請輸入……或.”)
a = input()
if a == “.”:
print(“請輸入被除數”)
b = input()
print(“請輸入除數”)
c = input()
print(“計算中”)
time.sleep(0.3)
j = float(b) / float(c)
print(“等於”+str(j))
if c == “0”:
print(“除數不能為0!”)
elif a == “……”:
print(“請輸入被除數”)
b = input()
print(“請輸入除數”)
c = input()
j = float(b) // float(c)
e = float(b) % float(c)
print(“等於”+str(j)+”……”+str(e))
if c == “0”:
print(“除數不能為0!”)
except Exception as e:
print(“您輸入的內容有錯誤”)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/189604.html