已阅读5页,还剩88页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章Python程序实例解析,温度转换程序实例,温度刻画存在不同体系,摄氏度以1标准大气压下水的结冰点为0度,沸点为100度,将温度进行等分刻画。华氏度以1标准大气压下水的结冰点为32度,沸点为212度,将温度进行等分刻画。问题:如何利用Python程序进行摄氏度和华氏度之间的转换,温度体系,步骤1:分析问题。这里给出三个角度。第一,利用程序进行温度转换,由用户输入温度值,程序给出输出结果。这是最直观的理解。(我们将以第一种理解角度为例编写并讲解余下程序步骤。),温度转换实例,第二,可以通过程序自动监听温度信息发布渠道(如收音机、电视机等)给出的温度播报源数据,通过语音识别、图像识别等方法自动获得温度值,再由程序完成转换输出给用户。这种角度相比第一种不需要用户给出输入。第三,随着互联网的高度普及和接入的便捷,程序也可以定期从温度信息发布网站获得温度值,再将温度信息转换成旅行者熟悉的方式。,温度转换实例,步骤2:划分边界:在确定问题计算部分的基础上进一步划分问题边界,即明确问题的输入数据、输出数据和对数据处理的要求。由于程序可能接收华氏温度和摄氏温度,并转换为另一种,该功能的IPO描述如下:输入:华氏或者摄氏温度值、温度标识处理:温度转化算法输出:华氏或者摄氏温度值、温度标识,温度转换实例,步骤3:设计算法,F表示华氏度,82F表示华氏82度C表示摄氏度,28C表示摄氏28度根据华氏和摄氏温度定义,转换公式如下:C=(F32)/1.8F=C*1.8+32,温度转换实例,步骤4:编写程序,温度转换实例,步骤5:调试、运行程序在系统命令行上运行如下命令执行程序:C:pythonTempConvert.py或者:使用IDLE打开上述文件,按F5运行(推荐)输入数值,观察输出,温度转换实例,步骤6:升级维护与人一样,任何程序都有生命周期。促使程序生命结束的事件有很多,例如:平台更换、使用方式变化、算法改进等。对于上述例子,只要中国、美国使用不同的温度标准,温度转换的问题将一直存在。随着问题使用场景、输入和输出要求等因素的变化,程序将需要不断地维护和升级,温度转换实例,Python语法元素分析,Python语言采用严格的“缩进”来表明程序的格式框架。缩进指每一行代码开始前的空白区域,用来表示代码之间的包含和层次关系。1个缩进=4个空格缩进是Python语言中表明程序框架的唯一手段,程序的格式框架,单层缩进多层缩进,程序的格式框架,注释是程序员在代码中加入的一行或多行信息,用来对语句、函数、数据结构或方法等进行说明,提升代码的可读性。注释是辅助性文字,会被编译或解释器略去,不被计算机执行。例如,实例代码1.1中第1行就是一个注释。#e1.1TempConvert.py,注释,注释:程序员在代码中加入的说明信息,不被计算机执行注释的两种方法:单行注释以#开头#Herearethecomments多行注释以开头和结尾ThisisamultilinecommentusedinPython,注释,注释主要有三个用途。第一,标明作者和版权信息。在每个源代码文件开始若干行增加注释,标记编写代码的作者、日期、用途、版权声明等信息第二,解释代码原理或用途。在程序关键代码附近增加注释,解释关键代码作用,增加程序的可读性。第三,辅助程序调试。在调试程序时候,可以通过单行或多行注释临时“去掉”一行或连续多行与当前调试无关的代码,辅助程序员找到程序发生问题的可能位置。,注释,与数学概念类似,Python程序中采用“变量”来保存和表示具体的数据值。为了更好使用变量等其他程序元素,需要给它们关联一个标识符(名字),关联标识符的过程称为命名。命名用于保证程序元素的唯一性。例如,实例代码1.1中,TempStr是一个接收输入字符串的变量名字,命名与保留字,常量:程序中值不发生改变的元素变量:程序中值发生改变或者可以发生改变的元素Python语言允许采用大写字母、小写字母、数字、下划线(_)和汉字等字符及其组合给变量命名,但名字的首字符不能是数字,中间不能出现空格,长度没有限制注意:标识符对大小写敏感,python和Python是两个不同的名字,命名与保留字,Python3.x保留字列表(33个),命名与保留字,存储和处理文本信息在计算机应用中十分常见。“文本”在程序中用字符串(string)类型来表示。Python语言中,字符串是用两个双引号或者单引号括起来的一个或多个字符。实例代码1.1中第2、3、5、6、8、10行代码都包含带有双引号的字符串。,字符串,字符串包括两种序号体系:正向递增序号和反向递减序号。如果字符串长度为L:正向递增需要以最左侧字符序号为0,向右依次递增,最右侧字符序号为L-1;反向递减序号以最右侧字符序号为-1,向左依次递减,最左侧字符序号为-L。,字符串,Python字符串也提供区间访问方式,采用N:M格式,表示字符串中从N到M(不包含M)的子字符串,其中,N和M为字符串的索引序号,可以混合使用正向递增序号和反向递减序号。实例代码1.1中第4、7行TempStr0:-1表示字符串TempStr变量第0个字符开始到最后一个字符(但不包含最后一个字符)的子串。,字符串,这里,以温度转换实例中语句为例,假如用户输入的字符串是110C,相应的字符串操作结果如下:,字符串,Python语言中,=表示“赋值”,即将等号右侧的值计算后将结果值赋给左侧变量,包含等号(=)的语句称为“赋值语句”Python字符串的两种序号体系同步赋值语句:同时给多个变量赋值,=,赋值语句,例:将变量x和y交换采用单个赋值,需要3行语句:即通过一个临时变量t缓存x的原始值,然后将y值赋给x,再将x的原始值通过t赋值给y。t=xx=yy=t,赋值语句,采用同步赋值语句,仅需要一行代码:x,y=y,x,赋值语句,获得用户输入之前,input()函数可以包含一些提示性文字=input(),Imput()函数,分支语句是控制程序运行的一类重要语句,它的作用是根据判断条件选择程序执行路径,使用方式如下:if:elif:.else:,分支语句,if、elif、else都是保留字,else后面不增加条件,表示不满足其他if语句的所有其余情况。实例代码1.1中第3、6、9行采用了“if-elif-else”类型的分支语句,如下:,分支语句,其中,第3行if语句包含第一个条件表达式:TempStr-1inF,f该表达式由保留字in组成,表示判断字符串TempStr的最后一个字符(TempStr-1)是否在一个由F或者f组成的集合中,即TempStr-1是否等于F或者f。如果相等,则返回True,否则返回False。,分支语句,对于if语句来说,当in表达式返回True时,执行第4、5行语句内容,如果返回False,则执行第6行的elif语句,判断下一个条件。第3行语句判断用户输入的温度值是否是华氏度。同理,第6行elif语句判断字符串TempStr的最后一个字符(TempStr-1)是否在一个由C或者c组成的“集合”中,如果条件成立,则继续执行第7、8行语句,否则执行第9行语句。第6行语句判断用户输入的温度值是否是摄氏度。,分支语句,第9行else语句没有判断条件,表示当所有if、elif条件都不满足时所执行的语句。表示用户输入的内容不符合预定义的摄氏温度值和华氏温度值格式,对于该程序来说,用户输入出现了错误。,分支语句,用户输入两个数字,计算它们的平均数,并输出平均数,Eval()函数,简单说,eval()的作用是将输入的字符串内容变成Python语句,并执行这个语句。实例代码1.1使用eval()函数将用户的部分输入(TempStr0:-1)由字符串转换成数字,假设用户输入102C,经过eval()函数处理,将变成Python内部可进行数学运算的数值102。,Eval()函数,使用eval()函数处理字符串需要注意合理使用,例如,如果直接输入字符串hello,eval()函数将去掉两个引号,解释其为一个变量,由于之前没有定义过hello变量,解释器报错。当输入字符串hello时,eval()函数去掉外部双引号后,内部还有一个引号,则hello被解释为字符串。eval()函数还有很多作用,请读者在实践中逐步挖掘。,Eval()函数,Eval()函数,如果希望用户输入一个数字,可以是小数或负数,并用程序对这个数字进行计算,可以采用eval(input()的组合,例如:,Eval()函数,实例代码1.1中第4和第7行表达式中,等号右侧进行了算术运算。Python支持+、-、*、/和*(幂)五种基本算术运算操作。表达式右侧含义是对TempStr字符串中除最后一位外的子串转换成数字,再对数字进行减法和除法运算。,Eval()函数,Python语法允许在表达式内部标记之间增加空格,这些多余的空格将被解释器去掉。下面这个语句与第4行语句功能一致。C=(eval(TempStr0:-1)-32)/1.8适度增加空格有助于提高代码可读性,但要注意不能改变与缩进相关的空格数量,不能在变量名等命名中间增加空格。,Eval()函数,Python语言的括号与数学运算中的括号一样,用来表示分组和优先级。不使用括号时,优先级按照算术优先级来确定,使用的多余括号将被编译程序去掉,不影响程序运行的正确性。下面语句与第4行语句功能一致。C=(eval(TempStr(0):(-1)-32)/(1.8),Eval()函数,Python语法允许在表达式内部标记之间增加空格,这些多余的空格将被解释器去掉。下面这个语句与第4行语句功能一致。C=(eval(TempStr0:-1)-32)/1.8适度增加空格有助于提高代码可读性,但要注意不能改变与缩进相关的空格数量,不能在变量名等命名中间增加空格。,Eval()函数,实例代码1.1中第5、8、10行是print()输出函数,用来输出字符信息,也能够以字符形式输出变量。当输出纯字符信息时,可以直接将待输出内容传递给print()函数,如第10行。当输出变量值时,需要采用格式化输出方式,通过format()方法将待输出变量整理成期望输出的格式,如第5和8行。,print()函数,具体来说,print()函数用槽格式和format()方法将变量和字符串结合到一起输出。例如第5行,输出的模板字符串是转换后的温度是:.2fC,其中大括号表示一个槽位置,这个括号中的内容由字符串后面紧跟的format()方法中的参数C填充。大括号:.2f中内容表示变量C输出的格式,具体表示输出数值取两位小数值,print()函数,用两个小例子感受一下这段程序的魅力吧,print()函数,循环语句:控制程序运行,根据判断条件或计数条件确定一段程序的运行次数遍历循环,基本过程如下foriinrange():例如,使某一段程序连续运行10次foriinrange(10):,循环语句,实例代码1.1不包含循环语句,程序执行一次后退出。如果希望程序一直运行,连续接受用户输入,直到用户输入的最后一个字符是N或n时退出,可以采用循环语句改造程序,如程序代码1.2所示,循环语句,循环语句,循环语句有多种类型,实例代码1.2采用了条件循环。条件循环的基本过程如下:while():,循环语句,当为真(True)时,执行语句,这些语句通过缩进表达与while语句的所属关系。当为假(False)时,退出循环,执行循环后语句,循环语句,当为真(True)时,执行语句,这些语句通过缩进表达与while语句的所属关系。当为假(False)时,退出循环,执行循环后语句实例代码1.2第3行使用了条件循环,该循环条件判断用户输入的最后一个字符(TempStr-1)是否是字符N或者字符nwhileTempStr-1notinN,n:,循环语句,如果该字符是N或者n,则条件语句结果为False,退出循环,进而结束程序;如果该字符不是N或者n,则条件语句结果为True,继续执行循环内部语句。这行语句中not是保留字,表示对判断结果取相反结果。,循环语句,实例代码1.1和实例代码1.2都是由一个序列表达式组成,程序按照顺序方式从头执行到尾。实际编程中,一般将特定功能代码编写在一个函数里,便于阅读和复用,也使程序模块化更好。函数可以理解为对一组表达特定功能表达式的封装,它与数学函数类似,能够接收变量并输出结果。input()、print()、eval()都是Python解释器内置的函数。,函数,经过函数改造后的温度转换程序实例代码1.3如下所示。,函数,实例代码第2行的def保留字定义了一个函数,从第2行到第10行,该函数名字为tempConvert(),它使用一个参数ValueStr。tempConvert()函数所属代码是第2行后与之有缩进关系的代码,即第3到10行。在这些代码中,ValueStr变量作为输入函数的字符串使用。由def保留字定义的函数在程序中不直接执行,需要使用函数名称调用才能执行。,函数,第11行由于没有缩进,它与第2行是平行关系,程序第1行到第10行不直接执行,从第11行开始执行,接收用户输入并存到变量TempStr中。第12行调用tempConvert()函数,并将TempStr当作参数传递给这个函数的ValueStr内部变量。接下来,程序根据tempConvert()函数定义执行函数内容,完成温度转换功能。简单说,程序代码1.3通过def语句定义了tempConvert()函数,并将原有功能封装在这个函数中,通过最后一行语句调用tempConvert()函数执行这些功能。,函数,.,Python蟒蛇绘制,Python英文是蟒蛇的意思,通过下面的例子来实践用Python语言输出图形效果,实例代码2.1与实例代码1.1有两个显著的不同。第一,这个程序没有使用显式的用户输入输出,即input()函数和print()函数;第二,这个程序绝大代码行都是.()形式,代码行中没有赋值语句。,Python蟒蛇绘制实例,.()是Python编程的一种典型表达形式,它可以表示调用一个对象的方法(),也可以表示调用一个函数库中的函数()。实例代码2.1使用了用于绘制图形的turtle库,并在代码第2行通过保留字import引用这个函数库。importturtle,Python蟒蛇绘制实例,实例代码2.1的第3行到第16行调用了turtle库中若干函数来绘制Python蟒蛇,所有被调用函数都使用了.()形式。这种通过使用函数库并利用库中函数进行编程的方法是Python语言最重要的特点,称为“模块编程”。,Python蟒蛇绘制实例,面向对象编程是一种基于对象(Object)的编程范式。对象是事物的一种抽象,它是一个实体,包含属性和方法两部分。属性是对象中的变量,方法是对象能够完成的操作。假设对象是O,则O.a表示对象O的属性a,O.b()表示对象O的操作b(),其中a是一个变量值,b()是一个函数。例如,一辆汽车可以作为一个对象,标记为C,汽车的颜色是汽车的属性,表示为C.color,前进是汽车的一个动作,相当于一个功能,因此前进是对象C的方法,表示为O.forward()。,面向对象编程,保留字import有两种方式引用函数库,对函数的使用方式略有不同。第一种引用函数库的方法如下:import此时,程序可以调用库名中所有函数,使用库中函数的格式如下.(),Python蟒蛇绘制实例,第二种引用函数库的方法如下:fromimportfromimport*#其中,*是通配符,表示所有函数此时,调用该库函数时不需要使用库名,直接使用如下格式:(),Python蟒蛇绘制实例,由于“Python蟒蛇绘制”程序只用了turtle库中setup()、penup()、fd()、pendown()、pensize()、pencolor()、seth()、circle()等8个函数,第2行的import语句也可以写成如下形式:fromturtleimportsetup,penup,fd,pendownfromturtleimportpensize,pencolor,seth,circle,Python蟒蛇绘制实例,两种函数库引用方式各有优点。第一种采用.()方式调用库中函数,能够显式标明函数来源,在引用较多库时代码可读性更好。第二种利用保留字直接引用库中函数,可以使代码更简洁,在类似程序代码2.2这种只引用一个库的情况下,效果更好。,Python蟒蛇绘制实例,需要注意,第一种引用方式,Python解释器将.整体作为函数名。当采用第二种方式时,Python解释器将作为函数名。这可能产生一种情况,假设用户已经定义了一个函数,库中的函数名将会与用户自定义的函数名冲突。对于初学者,建议采用第一种库引用方式,使用.()方式调用库函数。,Python蟒蛇绘制实例,def用于定义函数,这段程序中,共出现两次def关键词,包含两个函数drawSnake和main。函数是一组代码的集合,用于表达一个功能,或者说,函数表示一组代码的归属,函数名称是这段代码的名字。def所定义的函数在程序中未经调用不能直接执行,需要通过函数名调用才能够执行。,Python蟒蛇绘制实例,eval()函数是Python语言中一个十分重要的函数,它能够以Python表达式的方式解析并执行字符串,将返回结果输出由于def定义的函数在程序中未经调用不会被执行,整个程序第一条执行的语句是main(),它表示执行名字为main()的函数。,Python蟒蛇绘制实例,从而,该程序跳转到main()函数定义的一组语句中执行,即开始执行turtle.setup()语句同样的,main()函数的最后一条语句调用了drawSnake()函数,当执行到这条语句时,程序跳转到drawSnake()函数中运行。,Python蟒蛇绘制实例,.,turtle库语法元素分析,使用turtle库,同学们头脑里需要有这样一个概念想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形其爬行轨迹形成了绘制图形。对于小海龟来说,有“前进”、“后退”、“旋转”等爬行行为,对坐标系的探索也通过“前进方向”、“后退方向”、“左侧方向”和“右侧方向”等小海龟自身角度方位来完成。,Python蟒蛇绘制实例,Python蟒蛇绘制实例,我们所使用的显示屏幕也是一个坐标系,该坐标系以左上角为原点,向左和向下分别是x轴和y轴。蟒蛇程序代码启动一个1300像素宽、800像素高的窗口,该窗口的左上角是屏幕的左上角。,Python蟒蛇绘制实例,turtle.setup(width,height,startx,starty)作用:设置主窗体的大小和位置参数:width:窗口宽度,如果值是整数,表示的像素值;如果值是小数,表示窗口宽度与屏幕的比例;height:窗口高度,如果值是整数,表示的像素值;如果值是小数,表示窗口高度与屏幕的比例;startx:窗口左侧与屏幕左侧的像素距离,如果值是None,窗口位于屏幕水平中央;starty:窗口顶部与屏幕顶部的像素距离,如果值是None,窗口位于屏幕垂直中央;,绘图坐标体系,绘图坐标体系,turtle中的画笔(即小海龟)可以通过一组函数来控制,实例代码2.1中第4行的turtle.penup()函数和第6行的turtle.pendown()函数是一组,它们分别表示抬起画笔和落下画笔,绘图坐标体系,函数定义如下:turtle.penup()别名turtle.pu(),turtle.up()作用:抬起画笔,之后,移动画笔不绘制形状turtle.pendown()别名turtle.pd(),turtle.down()作用:落下画笔,之后,移动画笔将绘制形状,绘图坐标体系,turtle.pensize()函数用来设置画笔尺寸,函数定义如下:turtle.pensize(width)别名turtle.width()作用:设置画笔宽度,当无参数输入时返回当前画笔宽度参数:width:设置的画笔线条宽度,如果为None或者为空,函数则返回当前画笔宽度。,画笔控制函数,turtle.pencolor()函数给画笔设置颜色turtle.pencolor(colorstring)或者turtle.pencolor(r,g,b)作用:设置画笔颜色,当无参数输入时返回当前画笔颜色参数:colorstring:表示颜色的字符串,例如:purple、red、blue等,(r,g,b):颜色对应的RGB数值,例如:(51,204,140),画笔控制函数,很多RGB颜色都有固定的英文名字,这些英文名字可以作为colorstring输入到turtle.pencolor()函数中,也可以采用(r,g,b)形式直接输入颜色值。几个典型的RGB颜色如表2.2所示,画笔控制函数,表2.2,RGB颜色是计算机系统最常用的颜色体系之一,它采用R(红色)、G(绿色)、B(蓝色)三种基本颜色及它们的叠加组成各式各样的颜色,构成颜色体系。理论表明,RGB颜色能够形成人眼感知的所有颜色。具体来说,RGB颜色采用(r,g,b)表示,其中,每个颜色采用8比特表示,取值范围是0,255。因此,RGB颜色一共可以表示2563(16M,约1,678万)种颜色。,RGB颜色,turtle通过一组函数控制画笔的行进动作,进而绘制形状。turtle.fd()函数最常用,它控制画笔向当前行进方向前进一个距离,函数定义如下:turtle.fd(distance)别名turtle.forward(distance)作用:向小海龟当前行进方向前进distance距离参数:distance:行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二年级数学计算题专项练习1000题汇编
- 【初中物理】密度(教学课件) -2024-2025学年人教版(2024)八年级物理上册
- 河南省信阳市普通高中2024-2025学年高一上学期期中考试语文试卷(无答案)
- 封塑料用电动装置包装用产业规划专项研究报告
- 刮面石收敛剂市场发展预测和趋势分析
- 医用踝部支具产业深度调研及未来发展现状趋势
- 划艇产业规划专项研究报告
- 人教版八年级英语上册 Unit 3 暑假基础练习
- 动物用维生素市场需求与消费特点分析
- 卫生用消毒剂市场发展预测和趋势分析
- 2021-2022学年部编版高中语文选择性必修上册字音字形成语知识梳理
- 2023电信网和互联网应用程序接口数据安全技术要求和测试方法
- 《互联网的应用》课件
- 娃哈哈CIS案例分析
- 初中九年级美术期末艺术测评指标试卷及答案
- 新能源科学与工程专业职业生涯规划
- 各单元测试卷(仁爱湘教版初一上)七上试卷
- 1.3地球的圈层结构课件高一地理
- 网络安全服务项目服务质量保障措施(实施方案)
- 高考作文等级评分标准
- 车辆制造工艺学
评论
0/150
提交评论