版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
+硬件趣学Python编程
数学计算最基本,制作简单计算器牛艾科技目录ContentsSuccessWords2第一部分字符与字符串第二部分运算符和表达式运算符和表达式第四部分计算器的基本原理第五部分计算器的代码实现第三部分类型转换目录ContentsSuccessWords3第一部分字符与字符串4字符串类型字符串是字符的集合。①单字符使用方法示例a='m'b='a'c='n'd=a+b+cprint(a,b,c,d)运行结果:manman5字符串类型字符串是一个字符序列,序列中的元素包含了一个从左到右的顺序序列。字符串最左端位置标记为0,依次增加。字符串中的编号叫做“索引”②字符串使用方法与单字符相同。(注:’’或””对字符内容没有影响)a="butter"b='fly'c=a+bprint(a,b,c)运行结果:butterflybutterfly6字符串类型转义字符:字符串里常常存在一些如换行、制表符等有特殊含义的字符,这些字符称之为转义字符比如\n表示换行,\t表示制表符,Python还允许用r“”表示“”内部的字符串默认不转义转义字符代表含义\(在行尾时)反斜杠符号\\反斜杠符号\"双引号\b退格\e转义\000空\n换行\v纵向制表符\t横向制表符\r回车\f换页\oyy八进制数,yy代表的字符\oxy十六进制数,yy代表的字符\other其他的字符以普通格式输出7字符串输出在Python3.x版本中,print函数为带括号的print()如果想要看变量的值,则直接在print后面加上变量名即可。如果是想要输出提示信息,如一句话,那我们需要将提示信息用‘单引号包裹起来(这使得内容构成一个字符串)使用逗号,隔开变量与其他剩余内容,则print在输出时会依次打印各个字符串或变量,遇到逗号,时会输出一个空格8字符串输出在程序中,看到了%这样的操作符,这就是Python中格式化输出符号描述%c格式化字符及其ASCII码%s格式化字符串%d格式化整数%u格式化无符号整型%o格式化无符号八进制数%x格式化无符号十六进制数%X格式化无符号十六进制数(大写)%f格式化浮点数字,可指定小数点后的精度%e用科学计数法格式化浮点数%E作用同%e,用科学计数法格式化浮点数%g%f和%e的简写%G%f和%E的简写%p用十六进制数格式化变量的地址9字符串输入Python3提供了input函数从标准输入读取一行文本,默认的标准输入是键盘input取得的值的类型都是字符串,即使输入的是数字,存入变量的也是字符串类型。10字符串输入切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。切片的语法:[起始:结束:步长]注意:选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。目录ContentsSuccessWords11第二部分运算符和表达式12运算符和操作数编写的大多数语句(逻辑行)都包含表达式。一个简单的表达式例如2+3。一个表达式可以分解为运算符和操作数。运算符的功能是完成某件事,它们由如“+”这样的符号或者其他特定的关键字表示。运算符需要数据来进行运算,这样的数据被称为操作数。在这个例子中,2和3是操作数。在Python中,表达式可以作为语句,但表达式结果不会存储。13运算符及其用法运算符名称说明例子+加两个对象相加3+5得到8。'a'+'b'得到'ab'。-减得到负数或是一个数减去另一个数-5.2得到一个负数。50-24得到26。*乘两个数相乘或是返回一个被重复若干次的字符串2*3得到6。'la'*3得到'lalala'。**幂返回x的y次幂3**4得到81(即3*3*3*3)/除x除以y4/3得到1(整数的除法得到整数结果)。4.0/3或4/3.0得到1.3333333333333333//取整除返回商的整数部分4//3.0得到1.0%取模返回除法的余数8%3得到2。-25.5%2.25得到1.5<<左移把一个数的比特向左移一定数目(每个数在内存中都表示为比特或二进制数字,即0和1)2<<2得到8。——2按比特表示为10>>右移把一个数的比特向右移一定数目11>>1得到5。——11按比特表示为1011,向右移动1比特后得到101,即十进制的5。14运算符及其用法运算符名称说明例子&按位与数的按位与5&3得到1。|按位或数的按位或5|3得到7。^按位异或数的按位异或5^3得到6~按位翻转x的按位翻转是-(x+1)~5得到6。运算符名称说明例子not布尔“非”如果x为True,返回False。如果x为False,它返回True。x=True;noty返回False。and布尔“与”如果x为False,xandy返回False,否则它返回y的计算值。x=False;y=True;xandy,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象称为短路计算。or布尔“或”如果x是True,它返回True,否则它返回y的计算值。x=True;y=False;xory返回True。15运算符及其用法运算符名称说明例子<小于返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。5<3返回0(即False)而3<5返回1(即True)。比较可以被任意连接:3<5<7返回True。>大于返回x是否大于y5>3返回True。如果两个操作数都是数字,它们首先被转换为一个共同的类型。否则,它总是返回False。<=小于等于返回x是否小于等于yx=3;y=6;x<=y返回True。>=大于等于返回x是否大于等于yx=4;y=3;x>=y返回True。==等于比较对象是否相等x=2;y=2;x==y返回True。x='str';y='stR';x==y返回False。x='str';y='str';x==y返回True。!=不等于比较两个对象是否不相等x=2;y=3;x!=y返回True。16运算符优先级默认地,运算符优先级表决定了哪个运算符在别的运算符之前计算。运算符通常由左向右结合,即具有相同优先级的运算符按照从左向右的顺序计算。例如,2+3+4被计算成(2+3)+4。一些如赋值运算符那样的运算符是由右向左结合的,即a=b=c被处理为a=(b=c)。如果想要改变它们的计算顺序,可以使用圆括号。例如,想要在一个表达式中让加法在乘法之前计算,那么就可以写成类似(2+3)*4的样子。17运算符描述lambdaLambda表达式or布尔“或”and布尔“与”notx布尔“非”in,notin成员测试is,isnot同一性测试<,<=,>,>=,!=,==比较|按位或^按位异或&按位与<<,>>移位+,-加法与减法*,/,%乘法、除法与取余+x,-x正负号~x按位翻转**指数目录ContentsSuccessWords18第三部分类型转换19类型转换函数int()、float()、str()和bool()分别用于将变量转换成整型、浮点型、字符串和布尔型变量int(4.5)=4(直接去掉小数部分)float(4)=4.0(增加小数部分)complex(4)=4+0Jcomplex(4.5)=4.5+0J20类型转换数值运算操作符可以隐式地转换输出结果的数字类型大多数数据类型都可以通过str()函数转换为字符串目录ContentsSuccessWords21第四部分计算器的基本原理22要点计算器是现代进行快速、准确计算的有利工具,在超市、办公等领域都有广泛的应用。我们从现存简单计算器出发,模拟其功能和特点,在skids板上通过屏幕显示出来。23设计思路由于skids只有4个按键,所以我们将计算器键盘显示在屏幕,通过这4个按键来进行选择。清空键确认键向左移动方向键向右移动方向键24设计思路屏幕布局如图所示,最上方为显示区域,显示输入和计算结果;下方为键盘区域,可通过四个按键进行选择。显示区按键区25基本原理利用左和下方向键(可循环移动),移动选框到要进行计算的第一个操作数,按下确认键选择,同时显示区显示该数字。用方向键去选择四个运算符,按下确认键。用方向键去选择第二个操作数,按下确认键,显示区显示该数字。用方向键去选择等号键,按下确认键,后台根据操作数和运算符进行计算,并将结果显示在屏幕上。26基本原理当然也要支持浮点运算,通过选择左下角的小数点输入浮点数。同时也可以通过连续选择操作数和操作符进行连续的运算。按下清空键时,将清空所有已经输入的数和运算符,并清空屏幕显示区,使计算器恢复到原始状态,等待重新的输入与计算。目录ContentsSuccessWords27第五部分计算器的代码实现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的坐标(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然后计算按键大小布局和计算器变量#计算器变量self.l_operand=0self.r_operand=0self.operator=123self.result=0self.dotFlag=0self.dotLoc=0定义左右操作数、运算符、运算结果定义小数点有无标志、小数点位置并对他们进行初始化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)定义画矩形的函数,使用screen.drawline()函数通过画直线的方法实现。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个按键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)调用之前画矩形的函数画出界面框架。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)定义显示按键文字的函数,使用text.draw()函数,在画好的界面键盘上写上相应的数字和运算符。33界面布局#按键选择初始化defselectInit(self):#变量初始化self.selectXi=0self.selectYi=0self.l_operand=0self.r_operand=0self.operator=123self.result=0self.dotFlag=0self.dotLoc=0按键选择初始化,选中按键1,屏幕显示区显示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计算器功能实现#计算器算法defsendData(self,num):#数字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#小数点.elifnum==10:ifself.dotFlag==0:self.dotFlag=1#等号=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#运算符+-*/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')实现四则运算、浮点运算、连续计算。35按键响应#按键事件处理defkeyboardEvent(self,key):#右移选择键ifself.keymatch[key]=="Key1":#取消前一个选择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)#选择右边一个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)右移按键响应,先取消前一个选择(用原色重新画一下边框),再选择右边一个按键(用另一种颜色画一下边框)。36按键响应#纵向移动键elifself.keymatch[key]=="Key2":#取消前一个选择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)#选择右边一个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)下移按键响应,先取消前一个选择(用原色重新画一下边框),再选择下边一个按键(用另一种颜色画一下边框)。37按键响应#确认键elifself.keymatch[key]=="Key3":num=self.keyboard[self.selectYi][self.selectXi]self.sendData(num)#清空显示区x=self.margin*3y=self.button_height-self.margin*3text.draw('',int(x),int(y),0x000000,0xffffff)#显示结果results=str(self.result)length=len(results)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理课件背景图大全
- 有效护理教学策略探讨
- 2026年脊髓损伤患者外骨骼机器人站立行走训练临床路径与评估指标
- 2026年小学网络安全教育
- 2026年载人深潜器生命支持系统设计技术指标要求
- 2026年未来产业基金赋能类脑智能企业发展的资本与资源对接模式
- 投资项目现金流量的估计方法
- 2026年水电安全应急处理
- 2026年山区防坠培训
- 急诊护理:感染性疾病患者的护理
- 2026年低介电常数电子布在高速PCB中的技术要求
- 2.1《依宪治国》 课件(共17张)+内嵌视频 道德与法治 八年级下册 统编版
- 2026黑龙江新产投集团审计中心招聘7人考试参考题库及答案解析
- 钣金工安全培训
- 2026年陕西航空职业技术学院单招职业技能测试题库必考题
- 2025年建筑电气安装与验收规范
- 2026年及未来5年中国涡轮喷气发动机行业市场调研分析及投资战略咨询报告
- 2026年江苏航空职业技术学院单招职业适应性测试模拟测试卷及答案1套
- 2026年长沙职院单招试题必考题
- DB3502-T 119-2024 医疗机构场地保洁与消毒规范
- 急性缺血性卒中替奈普酶静脉溶栓治疗专家共识规范化结构化解读2026
评论
0/150
提交评论