资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,2,章,Python,程序实例解析,*,温度转换程序实例,*,温度刻画存在不同体系,摄氏度以,1,标准大气压下水的结冰点为,0,度,沸点为,100,度,将温度进行等分刻画。华氏度以,1,标准大气压下水的结冰点为,32,度,沸点为,212,度,将温度进行等分刻画。,问题:如何利用,Python,程序进行摄氏度和华氏度之间的转换,温度体系,*,步骤,1,:分析问题。这里给出三个角度。,第一,利用程序进行温度转换,由用户输入温度值,程序给出输出结果。这是最直观的理解。(我们将以第一种理解角度为例编写并讲解余下程序步骤。),温度转换实例,*,第二,可以通过程序自动监听温度信息发布渠道(如收音机、电视机等)给出的温度播报源数据,通过语音识别、图像识别等方法自动获得温度值,再由程序完成转换输出给用户。这种角度相比第一种不需要用户给出输入。,第三,随着互联网的高度普及和接入的便捷,程序也可以定期从温度信息发布网站获得温度值,再将温度信息转换成旅行者熟悉的方式。,温度转换实例,*,步骤,2,:划分边界:在确定问题计算部分的基础上进一步划分问题边界,即明确问题的输入数据、输出数据和对数据处理的要求。由于程序可能接收华氏温度和摄氏温度,并转换为另一种,该功能的,IPO,描述如下:,输入:华氏或者摄氏温度值、温度标识,处理:温度转化算法,输出:华氏或者摄氏温度值、温度标识,温度转换实例,*,步骤,3,:设计算法,,F,表示华氏度,,82F,表示华氏,82,度,C,表示摄氏度,,28C,表示摄氏,28,度,根据华氏和摄氏温度定义,转换公式如下:,C=(F 32)/1.8,F=C*1.8+32,温度转换实例,*,步骤,4,:编写程序,温度转换实例,*,步骤,5,:调试、运行程序,在系统命令行上运行如下命令执行程序:,C:python TempConvert.py,或者:使用,IDLE,打开上述文件,按,F5,运行(推荐),输入数值,观察输出,温度转换实例,*,步骤,6,:升级维护,与人一样,任何程序都有生命周期。促使程序生命结束的事件有很多,例如:平台更换、使用方式变化、算法改进等。对于上述例子,只要中国、美国使用不同的温度标准,温度转换的问题将一直存在。随着问题使用场景、输入和输出要求等因素的变化,程序将需要不断地维护和升级,温度转换实例,*,Python,语法元素分析,*,Python,语言采用严格的“缩进”来表明程序的格式框架。缩进指每一行代码开始前的空白区域,用来表示代码之间的包含和层次关系。,1,个缩进,=4,个空格,缩进是,Python,语言中表明程序框架的唯一手段,程序的格式框架,*,单层缩进,多层缩进,程序的格式框架,*,注释:程序员在代码中加入的说明信息,不被计算机执行,注释的两种方法:,单行注释以,#,开头,#Here are the comments,多行注释以,开头和结尾,This is a multiline comment,used in Python,注释,*,注释主要有三个用途。第一,标明作者和版权信息。在每个源代码文件开始若干行增加注释,标记编写代码的作者、日期、用途、版权声明等信息,第二,解释代码原理或用途。在程序关键代码附近增加注释,解释关键代码作用,增加程序的可读性。,第三,辅助程序调试。在调试程序时候,可以通过单行或多行注释临时“去掉”一行或连续多行与当前调试无关的代码,辅助程序员找到程序发生问题的可能位置。,注释,*,常量:程序中值不发生改变的元素,变量:程序中值发生改变或者可以发生改变的元素,Python,语言允许采用大写字母、小写字母、数字、下划线,(_),和汉字等字符及其组合给变量命名,但名字的首字符不能是数字,中间不能出现空格,长度没有限制,注意:标识符对大小写敏感,,python,和,Python,是两个不同的名字,命名与保留字,*,Python 3.x,保留字列表,(33,个,),命名与保留字,*,存储和处理文本信息在计算机应用中十分常见。“文本”在程序中用字符串(,string,)类型来表示。,Python,语言中,字符串是用两个双引号,或者单引号,括起来的一个或多个字符。实例代码,1.1,中第,2,、,3,、,5,、,6,、,8,、,10,行代码都包含带有双引号的字符串。,字符串,*,字符串包括两种序号体系:正向递增序号和反向递减序号。,如果字符串长度为,L,:正向递增需要以最左侧字符序号为,0,,向右依次递增,最右侧字符序号为,L-1,;反向递减序号以最右侧字符序号为,-1,,向左依次递减,最左侧字符序号为,-L,。,字符串,*,Python,语言中,,=,表示“赋值”,即将等号右侧的值计算后将结果值赋给左侧变量,包含等号(,=,)的语句称为,“,赋值语句,”Python,字符串的两种序号体系,同步赋值语句,:,同时给多个变量赋值,=,赋值语句,*,例:将变量,x,和,y,交换,采用单个赋值,需要,3,行语句:即通过一个临时变量,t,缓存,x,的原始值,然后将,y,值赋给,x,,再将,x,的原始值通过,t,赋值给,y,。,t=x,x=y,y=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-1 in F,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,中第,5,、,8,、,10,行是,print(),输出函数,用来输出字符信息,也能够以字符形式输出变量。,当输出纯字符信息时,可以直接将待输出内容传递给,print(),函数,如第,10,行。,当输出变量值时,需要采用格式化输出方式,通过,format(),方法将待输出变量整理成期望输出的格式,如第,5,和,8,行。,print(),函数,*,具体来说,,print(),函数用槽格式和,format(),方法将变量和字符串结合到一起输出。例如第,5,行,输出的模板字符串是,转换后的温度是,:.2fC,,其中大括号,表示一个槽位置,这个括号中的内容由字符串后面紧跟的,format(),方法中的参数,C,填充。大括号,:.2f,中内容表示变量,C,输出的格式,具体表示输出数值取两位小数值,print(),函数,*,用两个小例子感受一下这段程序的魅力吧,print(),函数,*,循环语句:控制程序运行,根据判断条件或计数条件确定一段程序的运行次数,遍历循环,基本过程如下,for i in range():,例如,使某一段程序连续运行,10,次,for i in range(10):,循环语句,*,实例代码,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(),函数执行这些功能。,函数,*,
展开阅读全文