




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
+硬件趣學(xué)Python編程
數(shù)學(xué)計(jì)算最基本,制作簡單計(jì)算器牛艾科技目錄ContentsSuccessWords2第一部分字符與字符串第二部分運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式第四部分計(jì)算器的基本原理第五部分計(jì)算器的代碼實(shí)現(xiàn)第三部分類型轉(zhuǎn)換目錄ContentsSuccessWords3第一部分字符與字符串4字符串類型字符串是字符的集合。①單字符使用方法示例a='m'b='a'c='n'd=a+b+cprint(a,b,c,d)運(yùn)行結(jié)果:manman5字符串類型字符串是一個(gè)字符序列,序列中的元素包含了一個(gè)從左到右的順序序列。字符串最左端位置標(biāo)記為0,依次增加。字符串中的編號(hào)叫做“索引”②字符串使用方法與單字符相同。(注:’’或””對(duì)字符內(nèi)容沒有影響)a="butter"b='fly'c=a+bprint(a,b,c)運(yùn)行結(jié)果:butterflybutterfly6字符串類型轉(zhuǎn)義字符:字符串里常常存在一些如換行、制表符等有特殊含義的字符,這些字符稱之為轉(zhuǎn)義字符比如\n表示換行,\t表示制表符,Python還允許用r“”表示“”內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義轉(zhuǎn)義字符代表含義\(在行尾時(shí))反斜杠符號(hào)\\反斜杠符號(hào)\"雙引號(hào)\b退格\e轉(zhuǎn)義\000空\n換行\(zhòng)v縱向制表符\t橫向制表符\r回車\f換頁\oyy八進(jìn)制數(shù),yy代表的字符\oxy十六進(jìn)制數(shù),yy代表的字符\other其他的字符以普通格式輸出7字符串輸出在Python3.x版本中,print函數(shù)為帶括號(hào)的print()如果想要看變量的值,則直接在print后面加上變量名即可。如果是想要輸出提示信息,如一句話,那我們需要將提示信息用‘單引號(hào)包裹起來(這使得內(nèi)容構(gòu)成一個(gè)字符串)使用逗號(hào),隔開變量與其他剩余內(nèi)容,則print在輸出時(shí)會(huì)依次打印各個(gè)字符串或變量,遇到逗號(hào),時(shí)會(huì)輸出一個(gè)空格8字符串輸出在程序中,看到了%這樣的操作符,這就是Python中格式化輸出符號(hào)描述%c格式化字符及其ASCII碼%s格式化字符串%d格式化整數(shù)%u格式化無符號(hào)整型%o格式化無符號(hào)八進(jìn)制數(shù)%x格式化無符號(hào)十六進(jìn)制數(shù)%X格式化無符號(hào)十六進(jìn)制數(shù)(大寫)%f格式化浮點(diǎn)數(shù)字,可指定小數(shù)點(diǎn)后的精度%e用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)%E作用同%e,用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)%g%f和%e的簡寫%G%f和%E的簡寫%p用十六進(jìn)制數(shù)格式化變量的地址9字符串輸入Python3提供了input函數(shù)從標(biāo)準(zhǔn)輸入讀取一行文本,默認(rèn)的標(biāo)準(zhǔn)輸入是鍵盤input取得的值的類型都是字符串,即使輸入的是數(shù)字,存入變量的也是字符串類型。10字符串輸入切片是指對(duì)操作的對(duì)象截取其中一部分的操作。字符串、列表、元組都支持切片操作。切片的語法:[起始:結(jié)束:步長]注意:選取的區(qū)間屬于左閉右開型,即從"起始"位開始,到"結(jié)束"位的前一位結(jié)束(不包含結(jié)束位本身)。目錄ContentsSuccessWords11第二部分運(yùn)算符和表達(dá)式12運(yùn)算符和操作數(shù)編寫的大多數(shù)語句(邏輯行)都包含表達(dá)式。一個(gè)簡單的表達(dá)式例如2+3。一個(gè)表達(dá)式可以分解為運(yùn)算符和操作數(shù)。運(yùn)算符的功能是完成某件事,它們由如“+”這樣的符號(hào)或者其他特定的關(guān)鍵字表示。運(yùn)算符需要數(shù)據(jù)來進(jìn)行運(yùn)算,這樣的數(shù)據(jù)被稱為操作數(shù)。在這個(gè)例子中,2和3是操作數(shù)。在Python中,表達(dá)式可以作為語句,但表達(dá)式結(jié)果不會(huì)存儲(chǔ)。13運(yùn)算符及其用法運(yùn)算符名稱說明例子+加兩個(gè)對(duì)象相加3+5得到8。'a'+'b'得到'ab'。-減得到負(fù)數(shù)或是一個(gè)數(shù)減去另一個(gè)數(shù)-5.2得到一個(gè)負(fù)數(shù)。50-24得到26。*乘兩個(gè)數(shù)相乘或是返回一個(gè)被重復(fù)若干次的字符串2*3得到6。'la'*3得到'lalala'。**冪返回x的y次冪3**4得到81(即3*3*3*3)/除x除以y4/3得到1(整數(shù)的除法得到整數(shù)結(jié)果)。4.0/3或4/3.0得到1.3333333333333333//取整除返回商的整數(shù)部分4//3.0得到1.0%取模返回除法的余數(shù)8%3得到2。-25.5%2.25得到1.5<<左移把一個(gè)數(shù)的比特向左移一定數(shù)目(每個(gè)數(shù)在內(nèi)存中都表示為比特或二進(jìn)制數(shù)字,即0和1)2<<2得到8。——2按比特表示為10>>右移把一個(gè)數(shù)的比特向右移一定數(shù)目11>>1得到5。——11按比特表示為1011,向右移動(dòng)1比特后得到101,即十進(jìn)制的5。14運(yùn)算符及其用法運(yùn)算符名稱說明例子&按位與數(shù)的按位與5&3得到1。|按位或數(shù)的按位或5|3得到7。^按位異或數(shù)的按位異或5^3得到6~按位翻轉(zhuǎn)x的按位翻轉(zhuǎn)是-(x+1)~5得到6。運(yùn)算符名稱說明例子not布爾“非”如果x為True,返回False。如果x為False,它返回True。x=True;noty返回False。and布爾“與”如果x為False,xandy返回False,否則它返回y的計(jì)算值。x=False;y=True;xandy,由于x是False,返回False。在這里,Python不會(huì)計(jì)算y,因?yàn)樗肋@個(gè)表達(dá)式的值肯定是False(因?yàn)閤是False)。這個(gè)現(xiàn)象稱為短路計(jì)算。or布爾“或”如果x是True,它返回True,否則它返回y的計(jì)算值。x=True;y=False;xory返回True。15運(yùn)算符及其用法運(yùn)算符名稱說明例子<小于返回x是否小于y。所有比較運(yùn)算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價(jià)。注意,這些變量名的大寫。5<3返回0(即False)而3<5返回1(即True)。比較可以被任意連接:3<5<7返回True。>大于返回x是否大于y5>3返回True。如果兩個(gè)操作數(shù)都是數(shù)字,它們首先被轉(zhuǎn)換為一個(gè)共同的類型。否則,它總是返回False。<=小于等于返回x是否小于等于yx=3;y=6;x<=y返回True。>=大于等于返回x是否大于等于yx=4;y=3;x>=y返回True。==等于比較對(duì)象是否相等x=2;y=2;x==y返回True。x='str';y='stR';x==y返回False。x='str';y='str';x==y返回True。!=不等于比較兩個(gè)對(duì)象是否不相等x=2;y=3;x!=y返回True。16運(yùn)算符優(yōu)先級(jí)默認(rèn)地,運(yùn)算符優(yōu)先級(jí)表決定了哪個(gè)運(yùn)算符在別的運(yùn)算符之前計(jì)算。運(yùn)算符通常由左向右結(jié)合,即具有相同優(yōu)先級(jí)的運(yùn)算符按照從左向右的順序計(jì)算。例如,2+3+4被計(jì)算成(2+3)+4。一些如賦值運(yùn)算符那樣的運(yùn)算符是由右向左結(jié)合的,即a=b=c被處理為a=(b=c)。如果想要改變它們的計(jì)算順序,可以使用圓括號(hào)。例如,想要在一個(gè)表達(dá)式中讓加法在乘法之前計(jì)算,那么就可以寫成類似(2+3)*4的樣子。17運(yùn)算符描述lambdaLambda表達(dá)式or布爾“或”and布爾“與”notx布爾“非”in,notin成員測試is,isnot同一性測試<,<=,>,>=,!=,==比較|按位或^按位異或&按位與<<,>>移位+,-加法與減法*,/,%乘法、除法與取余+x,-x正負(fù)號(hào)~x按位翻轉(zhuǎn)**指數(shù)目錄ContentsSuccessWords18第三部分類型轉(zhuǎn)換19類型轉(zhuǎn)換函數(shù)int()、float()、str()和bool()分別用于將變量轉(zhuǎn)換成整型、浮點(diǎn)型、字符串和布爾型變量int(4.5)=4(直接去掉小數(shù)部分)float(4)=4.0(增加小數(shù)部分)complex(4)=4+0Jcomplex(4.5)=4.5+0J20類型轉(zhuǎn)換數(shù)值運(yùn)算操作符可以隱式地轉(zhuǎn)換輸出結(jié)果的數(shù)字類型大多數(shù)數(shù)據(jù)類型都可以通過str()函數(shù)轉(zhuǎn)換為字符串目錄ContentsSuccessWords21第四部分計(jì)算器的基本原理22要點(diǎn)計(jì)算器是現(xiàn)代進(jìn)行快速、準(zhǔn)確計(jì)算的有利工具,在超市、辦公等領(lǐng)域都有廣泛的應(yīng)用。我們從現(xiàn)存簡單計(jì)算器出發(fā),模擬其功能和特點(diǎn),在skids板上通過屏幕顯示出來。23設(shè)計(jì)思路由于skids只有4個(gè)按鍵,所以我們將計(jì)算器鍵盤顯示在屏幕,通過這4個(gè)按鍵來進(jìn)行選擇。清空鍵確認(rèn)鍵向左移動(dòng)方向鍵向右移動(dòng)方向鍵24設(shè)計(jì)思路屏幕布局如圖所示,最上方為顯示區(qū)域,顯示輸入和計(jì)算結(jié)果;下方為鍵盤區(qū)域,可通過四個(gè)按鍵進(jìn)行選擇。顯示區(qū)按鍵區(qū)25基本原理利用左和下方向鍵(可循環(huán)移動(dòng)),移動(dòng)選框到要進(jìn)行計(jì)算的第一個(gè)操作數(shù),按下確認(rèn)鍵選擇,同時(shí)顯示區(qū)顯示該數(shù)字。用方向鍵去選擇四個(gè)運(yùn)算符,按下確認(rèn)鍵。用方向鍵去選擇第二個(gè)操作數(shù),按下確認(rèn)鍵,顯示區(qū)顯示該數(shù)字。用方向鍵去選擇等號(hào)鍵,按下確認(rèn)鍵,后臺(tái)根據(jù)操作數(shù)和運(yùn)算符進(jìn)行計(jì)算,并將結(jié)果顯示在屏幕上。26基本原理當(dāng)然也要支持浮點(diǎn)運(yùn)算,通過選擇左下角的小數(shù)點(diǎn)輸入浮點(diǎn)數(shù)。同時(shí)也可以通過連續(xù)選擇操作數(shù)和操作符進(jìn)行連續(xù)的運(yùn)算。按下清空鍵時(shí),將清空所有已經(jīng)輸入的數(shù)和運(yùn)算符,并清空屏幕顯示區(qū),使計(jì)算器恢復(fù)到原始狀態(tài),等待重新的輸入與計(jì)算。目錄ContentsSuccessWords27第五部分計(jì)算器的代碼實(shí)現(xiàn)28變量#按鍵變量self.keys=[Pin(p,Pin.IN)forpin[35,36,39,34]]self.keymatch=["Key1","Key2","Key3","Key4"]self.keyboard=[[1,2,3,123],[4,5,6,456],[7,8,9,789],[10,0,11,12]]self.keydict={1:'1',2:'2',3:'3',123:'+',4:'4',5:'5',6:'6',456:'-',7:'7',8:'8',9:'9',789:'×',10:'.',0:'0',11:'=',12:'÷'}self.startX=self.margin*2self.startY=self.margin*2+self.button_height+self.marginself.selectXi=0self.selectYi=0獲取按鍵引腳35,36,39,34定義鍵盤二位列表keyboard和它的字典keydict定義按鍵1的坐標(biāo)(startX,startY)定義按鍵選擇位置按鍵變量29變量#布局變量self.screen_width=240self.screen_height=320self.margin=5self.button_width=(self.screen_width-self.margin*7)/4self.button_height=(self.screen_height-self.margin*8)/5屏幕大小為240×320定義按鍵間距為5然后計(jì)算按鍵大小布局和計(jì)算器變量#計(jì)算器變量self.l_operand=0self.r_operand=0self.operator=123self.result=0self.dotFlag=0self.dotLoc=0定義左右操作數(shù)、運(yùn)算符、運(yùn)算結(jié)果定義小數(shù)點(diǎn)有無標(biāo)志、小數(shù)點(diǎn)位置并對(duì)他們進(jìn)行初始化30界面布局#畫矩形defdrawRect(self,x1,y1,x2,y2,lineWidth,lineColor):x=int(x1)y=int(y1)w=int(x2-x1)h=int(y2-y1)screen.drawline(x,y,x+w,y,lineWidth,lineColor)screen.drawline(x+w,y,x+w,y+h,lineWidth,lineColor)screen.drawline(x+w,y+h,x,y+h,lineWidth,lineColor)screen.drawline(x,y+h,x,y,lineWidth,lineColor)定義畫矩形的函數(shù),使用screen.drawline()函數(shù)通過畫直線的方法實(shí)現(xiàn)。31界面布局#畫界面defdrawInterface(self):#顯示框x1=self.margin*2y1=self.margin*2x2=self.screen_width-self.margin*2y2=self.margin*2+self.button_heightself.drawRect(x1,y1,x2,y2,2,0x00ffff)#16個(gè)按鍵foriinrange(4):y=self.startY+i*(self.button_height+self.margin)forjinrange(4):x=self.startX+j*(self.button_width+self.margin)self.drawRect(x,y,x+self.button_width,y+self.button_height,2,0x00ff00)調(diào)用之前畫矩形的函數(shù)畫出界面框架。32界面布局#顯示按鍵文字defshowKeyboard(self):foriinrange(4):forjinrange(4):num=self.keyboard[j][i]x=i*(self.button_width+self.margin)+28y=(j+1)*(self.button_height+self.margin)+30text.draw(self.keydict[num],int(x),int(y),0x000000,0xffffff)定義顯示按鍵文字的函數(shù),使用text.draw()函數(shù),在畫好的界面鍵盤上寫上相應(yīng)的數(shù)字和運(yùn)算符。33界面布局#按鍵選擇初始化defselectInit(self):#變量初始化self.selectXi=0self.selectYi=0self.l_operand=0self.r_operand=0self.operator=123self.result=0self.dotFlag=0self.dotLoc=0按鍵選擇初始化,選中按鍵1,屏幕顯示區(qū)顯示0。#顯示初始化x=self.margin*3y=self.button_height-self.margin*3text.draw('0',int(x),int(y),0x000000,0xffffff)#選擇初始化x=self.startXy=self.startYself.drawRect(x,y,x+self.button_width,y+self.button_height,2,0xff0000)34計(jì)算器功能實(shí)現(xiàn)#計(jì)算器算法defsendData(self,num):#數(shù)字0-9ifnum<10:ifself.operator==11:self.r_operand=0self.operator=123ifself.dotFlag==0:self.r_operand=self.r_operand*10+numelse:self.dotLoc=self.dotLoc+self.dotFlagself.r_operand=self.r_operand+num/(10**self.dotLoc)self.result=self.r_operand#小數(shù)點(diǎn).elifnum==10:ifself.dotFlag==0:self.dotFlag=1#等號(hào)=elifnum==11:self.dotFlag=0self.dotLoc=0self.r_operand=self.calculate(self.l_operand,self.operator,self.r_operand)self.l_operand=0self.operator=numself.result=self.r_operand#運(yùn)算符+-*/elifnum>11:self.dotFlag=0self.dotLoc=0self.l_operand=self.calculate(self.l_operand,self.operator,self.r_operand)self.r_operand=0self.operator=numself.result=self.l_operandelse:print('inputerror')實(shí)現(xiàn)四則運(yùn)算、浮點(diǎn)運(yùn)算、連續(xù)計(jì)算。35按鍵響應(yīng)#按鍵事件處理defkeyboardEvent(self,key):#右移選擇鍵ifself.keymatch[key]=="Key1":#取消前一個(gè)選擇num=self.keyboard[self.selectYi][self.selectXi]x=self.selectXi*(self.button_width+self.margin)+self.startXy=self.selectYi*(self.button_height+self.margin)+self.startYself.drawRect(x,y,x+self.button_width,y+self.button_height,2,0x00ff00)#選擇右邊一個(gè)self.selectXi=(self.selectXi+1)%4num=self.keyboard[self.selectYi][self.selectXi]x=self.selectXi*(self.button_width+self.margin)+self.startXself.drawRect(x,y,x+self.button_width,y+self.button_height,2,0xff0000)右移按鍵響應(yīng),先取消前一個(gè)選擇(用原色重新畫一下邊框),再選擇右邊一個(gè)按鍵(用另一種顏色畫一下邊框)。36按鍵響應(yīng)#縱向移動(dòng)鍵elifself.keymatch[key]=="Key2":#取消前一個(gè)選擇num=self.keyboard[self.selectYi][self.selectXi]x=self.selectXi*(self.button_width+self.margin)+self.startXy=self.selectYi*(self.button_height+self.margin)+self.startYself.drawRect(x,y,x+self.button_width,y+self.button_height,2,0x00ff00)#選擇右邊一個(gè)self.selectYi=(self.selectYi+1)%4num=self.keyboard[self.selectYi][self.selectXi]y=self.selectYi*(self.button_height+self.margin)+self.startYself.drawRect(x,y,x+self.button_width,y+self.button_height,2,0xff0000)下移按鍵響應(yīng),先取消前一個(gè)選擇(用原色重新畫一下邊框),再選擇下邊一個(gè)按鍵(用另一種顏色畫一下邊框)。37按鍵響應(yīng)#確認(rèn)鍵elifself.keymatch[key]=="Key3":num=self.keyboard[self.selectYi][self.selectXi]self.sendData(num)#清空顯示區(qū)x=self.margin*3y=self.button_height-self.margin*3text.draw('',int(x),int(y),0x000000,0xffffff)#顯示結(jié)果results=str(self.result)length=len(results)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 西安工業(yè)大學(xué)《國內(nèi)外音樂教學(xué)法與音樂活動(dòng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 唐山師范學(xué)院《云計(jì)算技術(shù)與應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢警官職業(yè)學(xué)院《機(jī)器人學(xué)引論》2023-2024學(xué)年第二學(xué)期期末試卷
- 石家莊財(cái)經(jīng)職業(yè)學(xué)院《書法美學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 麗水市遂昌縣2025屆數(shù)學(xué)四年級(jí)第二學(xué)期期末監(jiān)測試題含解析
- 思南縣2025屆四年級(jí)數(shù)學(xué)第二學(xué)期期末達(dá)標(biāo)測試試題含解析
- 遼寧省遼陽市遼陽縣2025屆三下數(shù)學(xué)期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含解析
- 遼寧冶金職業(yè)技術(shù)學(xué)院《土壤與生物地理學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 石家莊城市經(jīng)濟(jì)職業(yè)學(xué)院《檢測技術(shù)及控制儀表》2023-2024學(xué)年第二學(xué)期期末試卷
- 吉林省扶余市第一中學(xué)2025年高三高考全真模擬卷(三)物理試題含解析
- 濕地養(yǎng)護(hù)服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- (完整)中小學(xué)教師職稱評(píng)定答辯題
- 精神專科醫(yī)院護(hù)理查房方案
- 15D502 等電位聯(lián)結(jié)安裝
- 試用期人員轉(zhuǎn)正考核表
- 高三數(shù)學(xué)復(fù)習(xí)備考策略
- 六、七年級(jí)走進(jìn)文言文譯文
- 鼻前庭囊腫摘除術(shù)后護(hù)理查房
- 幼兒園中班美術(shù)《瘋狂的頭發(fā)》課件
- 南京文化與歷史課件
- 半月板損傷的護(hù)理查房
評(píng)論
0/150
提交評(píng)論