Python雙版本計(jì)算器詳解
有框計(jì)算器
這個(gè)計(jì)算器我們用到了Python自帶的Tkinter庫
# 導(dǎo)入tkinter庫 import tkinter
我們要對(duì)窗口進(jìn)行一些基本操作
# 獲取一個(gè)窗口 window = tkinter.Tk() # 設(shè)置標(biāo)題 window.title('計(jì)算器') # 設(shè)置窗口大小 window.geometry('200x200')
接著用函數(shù)定義一個(gè)輸入方法
輸入方法
# 輸入方法 def add(n): # 獲取到n1文本框的值 n1 = inp.get() # 清空文本框 inp.delete(0,len(n1)) # 插入原來的加上新輸入?yún)?shù)n inp.insert(0,n1+str(n))
再用函數(shù)定義一個(gè)計(jì)算方法
計(jì)算方法
# 執(zhí)行計(jì)算方法 def calc(): n1 = inp.get() inp.delete(0,len(n1)) # 把文本框的字符串用eval當(dāng)代碼執(zhí)行一次,再插入到文本框 inp.insert(0,str(eval(n1)))
完成后還需要把文本框給清除,我們還是用函數(shù)
清除文本框方法
# 清空文本框 def clear(): n1 = inp.get() inp.delete(0,len(n1))
清空文本框后還會(huì)留下一個(gè)字符,我們需要?jiǎng)h除最后一個(gè)字符,仍然用函數(shù)
刪除最后一個(gè)字符方法
# 刪除最后一個(gè)字符 def back(): n1 = inp.get() inp.delete(len(n1)-1,len(n1))
接著我們計(jì)算絕對(duì)值
計(jì)算絕對(duì)值
# 計(jì)算絕對(duì)值 def ab(): n1 = inp.get() inp.delete(0,len(n1)) inp.insert(0,str(eval(n1)*-1))
設(shè)置一些文本框作為按鈕的一部分
設(shè)置文本框
# 設(shè)置一個(gè)文本框 inp = tkinter.Entry(window, width=25) # 在第0行,第0個(gè),合并5列 inp.grid(row=0,column=0,columnspan=5)
再制作一些功能按鈕
功能按鈕
# 刪除按鈕(窗口,寬度,文本,執(zhí)行命令).grid(1行,0列) tkinter.Button(window,width=5, text="C", command=clear).grid(row=1,column=0) tkinter.Button(window,width=5, text="←", command=back).grid(row=1,column=1) tkinter.Button(window,width=5, text="+/-", command=ab).grid(row=1,column=2)
再制作運(yùn)算符按鈕
運(yùn)算符
# 刪除按鈕(窗口,寬度,文本,背景色,文本顏色,執(zhí)行命令并傳入?yún)?shù)).grid(1行,4列) tkinter.Button(window,width=5, text="+",bg="#f70",fg="#fff",command=lambda:add("+")).grid(row=1,column=4) tkinter.Button(window,width=5, text="-", bg="#f70",fg="#fff",command=lambda:add("-")).grid(row=2,column=4) tkinter.Button(window,width=5, text="×",bg="#f70",fg="#fff",command=lambda:add("*")).grid(row=3,column=4) tkinter.Button(window,width=5, text="÷",bg="#f70",fg="#fff",command=lambda:add("/")).grid(row=4,column=4) tkinter.Button(window,width=12,text="0", command=lambda:add("0")).grid(row=5,column=0,columnspan=2) tkinter.Button(window,width=5,text="=", bg="#f70",fg="#fff",command=calc).grid(row=5,column=4) tkinter.Button(window,width=5, text=".", command=lambda:add(".")).grid(row=5,column=2)
最后,我們發(fā)現(xiàn)還沒有 123 456 789 9個(gè)按鈕,我們就用for循環(huán)創(chuàng)建
把代碼加到
# 設(shè)置一個(gè)文本框 inp = tkinter.Entry(window, width=25) # 在第0行,第0個(gè),合并5列 inp.grid(row=0,column=0,columnspan=5)
的下面
9個(gè)按鈕
# 設(shè)置一個(gè)文本框 inp = tkinter.Entry(window, width=25) # 在第0行,第0個(gè),合并5列 inp.grid(row=0,column=0,columnspan=5) # 用for循環(huán) 創(chuàng)建 123 456 789 9個(gè)按鈕 for i in range(0,3): for j in range(1,4): n = j+i*3 btn=tkinter.Button(window, text=str(j+i*3),width=5, command=lambda n=n:add(n)) btn.grid(row=i+2,column=j-1)
一個(gè)有框的計(jì)算器就做好了,完整代碼請(qǐng)看文章末尾
命令行計(jì)算器
這個(gè)計(jì)算器的代碼很短,很快就能學(xué)會(huì)
首先獲取第一個(gè)數(shù)與第二個(gè)數(shù)
獲取數(shù)
# 通過用戶輸入獲取運(yùn)算的第一個(gè)數(shù) num1 = int(input("輸入第一個(gè)數(shù)字: ")) # 通過用戶輸入獲取運(yùn)算的第二個(gè)數(shù) # 默認(rèn)是字符串需要用int把字符轉(zhuǎn)換為數(shù)組 num2 = int(input("輸入第二個(gè)數(shù)字: ")) # 提示用戶輸入運(yùn)算符
我們還得添加while True來保證代碼重復(fù)執(zhí)行,否則計(jì)算器無法運(yùn)算多次
在前面加上while True
while True: # 通過用戶輸入獲取運(yùn)算的第一個(gè)數(shù) num1 = int(input("輸入第一個(gè)數(shù)字: ")) # 通過用戶輸入獲取運(yùn)算的第二個(gè)數(shù) # 默認(rèn)是字符串需要用int把字符轉(zhuǎn)換為數(shù)組 num2 = int(input("輸入第二個(gè)數(shù)字: ")) # 提示用戶輸入運(yùn)算符
這樣就能重復(fù)了
接著獲取運(yùn)算方法
運(yùn)算方法
print("輸入運(yùn)算:1、相加;2、相減;3、相乘;4、相除") # 獲取用戶輸入的運(yùn)算符號(hào) choice = input("輸入你的選擇(1/2/3/4):")
接著判斷加法
判斷加法
# 如果是1 if choice == '1': print(num1,"+",num2,"=", num1+num2)
減法、乘法、除法和加法差不多,你們可以自己試試
分割 分割
實(shí)在不會(huì)也可以看看我的
剩下的
# 如果2 elif choice == '2': print(num1,"-",num2,"=", num1-num2) elif choice == '3': print(num1,"×",num2,"=", num1*num2) elif choice == '4': print(num1,"÷",num2,"=", num1/num2)
再把他們橋接到加法的下面
橋接
while True: # 通過用戶輸入獲取運(yùn)算的第一個(gè)數(shù) num1 = int(input("輸入第一個(gè)數(shù)字: ")) # 通過用戶輸入獲取運(yùn)算的第二個(gè)數(shù) # 默認(rèn)是字符串需要用int把字符轉(zhuǎn)換為數(shù)組 num2 = int(input("輸入第二個(gè)數(shù)字: ")) # 提示用戶輸入運(yùn)算符 print("輸入運(yùn)算:1、相加;2、相減;3、相乘;4、相除") # 獲取用戶輸入的運(yùn)算符號(hào) choice = input("輸入你的選擇(1/2/3/4):") # 如果是1 if choice == '1': print(num1,"+",num2,"=", num1+num2) # 如果2 elif choice == '2': print(num1,"-",num2,"=", num1-num2) elif choice == '3': print(num1,"×",num2,"=", num1*num2) elif choice == '4': print(num1,"÷",num2,"=", num1/num2)
算法部分就好了,我們還需要加一個(gè)else,否則輸出將會(huì)出錯(cuò)
else
# 其他都是非法的 else: print("非法輸入")
最后的最后我們把else加到上面一部分的下面
橋接2
while True: # 通過用戶輸入獲取運(yùn)算的第一個(gè)數(shù) num1 = int(input("輸入第一個(gè)數(shù)字: ")) # 通過用戶輸入獲取運(yùn)算的第二個(gè)數(shù) # 默認(rèn)是字符串需要用int把字符轉(zhuǎn)換為數(shù)組 num2 = int(input("輸入第二個(gè)數(shù)字: ")) # 提示用戶輸入運(yùn)算符 print("輸入運(yùn)算:1、相加;2、相減;3、相乘;4、相除") # 獲取用戶輸入的運(yùn)算符號(hào) choice = input("輸入你的選擇(1/2/3/4):") # 如果是1 if choice == '1': print(num1,"+",num2,"=", num1+num2) # 如果2 elif choice == '2': print(num1,"-",num2,"=", num1-num2) elif choice == '3': print(num1,"×",num2,"=", num1*num2) elif choice == '4': print(num1,"÷",num2,"=", num1/num2) # 其他都是非法的 else: print("非法輸入")
兩個(gè)計(jì)算器都介紹完畢了,接下來是完整代碼
完整代碼
有框計(jì)算器
# 導(dǎo)入tkinter庫 import tkinter # 獲取一個(gè)窗口 window = tkinter.Tk() # 設(shè)置標(biāo)題 window.title('計(jì)算器') # 設(shè)置窗口大小 window.geometry('200x200') # 輸入方法 def add(n): # 獲取到n1文本框的值 n1 = inp.get() # 清空文本框 inp.delete(0,len(n1)) # 插入原來的加上新輸入?yún)?shù)n inp.insert(0,n1+str(n)) # 執(zhí)行計(jì)算方法 def calc(): n1 = inp.get() inp.delete(0,len(n1)) # 把文本框的字符串用eval當(dāng)代碼執(zhí)行一次,再插入到文本框 inp.insert(0,str(eval(n1))) # 清空文本框 def clear(): n1 = inp.get() inp.delete(0,len(n1)) # 刪除最后一個(gè)字符 def back(): n1 = inp.get() inp.delete(len(n1)-1,len(n1)) # 計(jì)算絕對(duì)值 def ab(): n1 = inp.get() inp.delete(0,len(n1)) inp.insert(0,str(eval(n1)*-1)) # 設(shè)置一個(gè)文本框 inp = tkinter.Entry(window, width=25) # 在第0行,第0個(gè),合并5列 inp.grid(row=0,column=0,columnspan=5) # 用for循環(huán) 創(chuàng)建 123 456 789 9個(gè)按鈕 for i in range(0,3): for j in range(1,4): n = j+i*3 btn=tkinter.Button(window, text=str(j+i*3),width=5, command=lambda n=n:add(n)) btn.grid(row=i+2,column=j-1) # 刪除按鈕(窗口,寬度,文本,執(zhí)行命令).grid(1行,0列) tkinter.Button(window,width=5, text="C", command=clear).grid(row=1,column=0) tkinter.Button(window,width=5, text="←", command=back).grid(row=1,column=1) tkinter.Button(window,width=5, text="+/-", command=ab).grid(row=1,column=2) # 刪除按鈕(窗口,寬度,文本,背景色,文本顏色,執(zhí)行命令并傳入?yún)?shù)).grid(1行,4列) tkinter.Button(window,width=5, text="+",bg="#f70",fg="#fff",command=lambda:add("+")).grid(row=1,column=4) tkinter.Button(window,width=5, text="-", bg="#f70",fg="#fff",command=lambda:add("-")).grid(row=2,column=4) tkinter.Button(window,width=5, text="×",bg="#f70",fg="#fff",command=lambda:add("*")).grid(row=3,column=4) tkinter.Button(window,width=5, text="÷",bg="#f70",fg="#fff",command=lambda:add("/")).grid(row=4,column=4) tkinter.Button(window,width=12,text="0", command=lambda:add("0")).grid(row=5,column=0,columnspan=2) tkinter.Button(window,width=5,text="=", bg="#f70",fg="#fff",command=calc).grid(row=5,column=4) tkinter.Button(window,width=5, text=".", command=lambda:add(".")).grid(row=5,column=2) # 進(jìn)入消息循環(huán) window.mainloop()
命令行計(jì)算器
while True: # 通過用戶輸入獲取運(yùn)算的第一個(gè)數(shù) num1 = int(input("輸入第一個(gè)數(shù)字: ")) # 通過用戶輸入獲取運(yùn)算的第二個(gè)數(shù) # 默認(rèn)是字符串需要用int把字符轉(zhuǎn)換為數(shù)組 num2 = int(input("輸入第二個(gè)數(shù)字: ")) # 提示用戶輸入運(yùn)算符 print("輸入運(yùn)算:1、相加;2、相減;3、相乘;4、相除") # 獲取用戶輸入的運(yùn)算符號(hào) choice = input("輸入你的選擇(1/2/3/4):") # 如果是1 if choice == '1': print(num1,"+",num2,"=", num1+num2) # 如果2 elif choice == '2': print(num1,"-",num2,"=", num1-num2) elif choice == '3': print(num1,"×",num2,"=", num1*num2) elif choice == '4': print(num1,"÷",num2,"=", num1/num2) # 其他都是非法的 else: print("非法輸入")
到此這篇關(guān)于Python雙版本計(jì)算器詳解的文章就介紹到這了,希望對(duì)大家有幫助,更多相關(guān)python內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
Python+Pygame實(shí)戰(zhàn)之炫舞小游戲的實(shí)現(xiàn)
提到QQ炫舞,可能很多人想到的第一個(gè)詞是“青春”?;腥婚g,這個(gè)承載了無數(shù)人回憶與時(shí)光的游戲品牌,已經(jīng)走到了第十幾個(gè)年頭。今天小編就來給大家嘗試做一款簡單的簡陋版的小游戲——《舞動(dòng)青春*炫舞》,感興趣的可以了解一下2022-12-12詳解Python利用APScheduler框架實(shí)現(xiàn)定時(shí)任務(wù)
在做一些python工具的時(shí)候,常常會(huì)碰到定時(shí)器問題,總覺著使用threading.timer或者schedule模塊非常不優(yōu)雅。所以本文將利用APScheduler框架實(shí)現(xiàn)定時(shí)任務(wù),需要的可以參考一下2022-03-03Python實(shí)現(xiàn)爬取網(wǎng)頁中動(dòng)態(tài)加載的數(shù)據(jù)
這篇文章主要介紹了Python實(shí)現(xiàn)爬取網(wǎng)頁中動(dòng)態(tài)加載的數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08解決vscode python print 輸出窗口中文亂碼的問題
今天小編就為大家分享一篇解決vscode python print 輸出窗口中文亂碼的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12