python课件Chapter02-ch

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Python程序基本构件庄天红软件开发过程•需求分析:问题是什么?•制定程序规格:程序要做什么?–对简单程序描述输入输出即可.•设计:程序怎么做?–主要任务是设计出满足规格的算法–一般用伪代码给出总体结构,不纠缠细节.•实现:用某种程序设计语言翻译设计.•测试与排错:测试程序是否如预期,排除bug.•维护:运行中还会不断有问题.2例:温度转换•需求:预报摄氏度,想知道对应华氏度.•规格:输入摄氏度,显示输出华氏度.两者对应关系是F=(9/5)C+32.•设计算法:–简单的IPO(Input,Process,Output)–提示用户输入摄氏温度–用F=9/5(C)+32将摄氏温度转换为华氏温度–在屏幕上显示输出结果•实现:翻译成Python程序(详见下页)•测试:常用边界数据.如输入0,10034例:温度转换(强调)•在开始写代码之前,先写一个伪代码形式的粗略的草稿•伪代码是用英语描述程序一步一步做什么–伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。•为什么那么麻烦呢?因为使用伪代码叙述中,我们更关注的是算法,而不是编程语言。–算法是处理问题的一系列的步骤。算法必须具体地指出在执行时每一步应当怎样做。算法与实现伪代码算法:输入摄氏度celsius计算华氏度fahrenheit=9/5celsius+32显示输出fahrenheitPython程序实现:#convert.py#AprogramtoconvertCelsiustempstoFahrenheit#by:SuzieProgrammerdefmain():celsius=input(WhatistheCelsiustemperature?)fahrenheit=9.0/5.0*celsius+32printThetemperatureis,fahrenheit,degreesFahrenheit.“main()56实现与测试•当我们写出一个程序后,一定要进行测试——一般使用边界(极端)作为测试条件WhatistheCelsiustemperature?0Thetemperatureis32.0degreesFahrenheit.main()WhatistheCelsiustemperature?100Thetemperatureis212.0degreesFahrenheit.main()WhatistheCelsiustemperature?-40Thetemperatureis-40.0degreesFahrenheit.程序构件:标识符•标识符:值,变量,函数,模块等的名字.–字母下划线开头,后接字母数字下划线–大小写敏感•良好编程风格:选择有意义的名字,并且风格保持一致.•保留字不能用于命名:and,assert,break,class,continue,def,del,elif,else,except,exec,finally,for,from,global,if,import,in,is,lambda,not,or,pass,print,raise,return,try,while,yield78注意:程序中的标识的使用–标识中大小写敏感–避免使用未定义(赋值)的标识•X•Celsius•Spam•spam•spAm•Spam_and_Eggs•Spam_And_Eggs程序构件:表达式•表达式:能计算出一个数据值的代码片段.–常量:3.9,“abc”–变量:如x,celsius–表达式op表达式:3.9*x*(1x)•运算符–不同类型的数据有不同运算–数值数据的运算:–运算符有优先级•良好编程风格:用注释、空行、空格、括号增加可读性.9程序构件:输出语句•如何描述语句的语法和语义?–需要一套元语言来描述,我们用语句模板表示法.•输出语句print的语法:printprintexprprintexpr,expr,…,exprprintexpr,expr,…,expr,•print的语义:自左向右计算表达式的值并在一行上显示,值之间以空格隔开.–最后输出换行,但以逗号结尾时不换行.1011初试简单语句x=5x5print(x)5print(spam)Traceback(mostrecentcalllast):Filepyshell#15,line1,in-toplevel-printspamNameError:name'spam'isnotdefined12初试简单语句print(3+4)print(3,4,3+4)print()print(3,4,end=),Print3+4print(Theansweris,3+4)7347Filestdin,line1print(3,4,end=)^SyntaxError:invalidsyntax7Theansweris7程序构件:赋值语句•语法var=expr•语义:计算表达式expr的值,存入变量var.–x=3.9*x*(1-x)–fahrenheit=9/5*celsius+32–x=5•Python特色:可以随时随地通过赋值语句创建变量;变量类型由赋值语句决定.•一个变量可被多次赋值,但总是持有最后一次赋值的结果.1314赋值语句多次赋值•赋值语句多次赋值后的结果:myVar=0myVar0myVar=7myVar7myVar=myVar+1myVar8程序构件:赋值语句(续)•输入赋值语句var=input(prompt)•语义–计算prompt的值(通常是字符串),显示该值–等待用户输入一个表达式(以回车键结束)–计算用户输入的表达式,得到input()的值–把input()的值存入var.•良好风格–用prompt提醒用户输入–prompt以空格结束.15程序构件:赋值语句(续)•同时赋值var,...,var=expr,...,expr•语义:计算右边各表达式的值,分别存入左边的对应变量.•例如:如何交换两个变量的值?–传统语言的做法:引入一临时变量–Python特色:x,y=y,x•input()也可为多个变量同时赋值–多个输入用逗号分隔1617同时赋值的例子•sum,diff=x+y,x-y•究竟它是如何交换变量的值呢?–C++系统要设置临时变量–它为什么不用?x=yy=x•Python系统简化其过程•自动实现临时变量暂存过程18同时赋值语句的使用•同时赋值语句使用在输入语句中•用逗号作为二个输入变量间的分隔符defspamneggs():spam,eggs=eval(input(Enter#ofslicesofspamfollowedby#ofeggs:))print(Youordered,eggs,eggsand,spam,slicesofspam.Yum!)spamneggs()Enterthenumberofslicesofspamfollowedbythenumberofeggs:3,2Youordered2eggsand3slicesofspam.Yum!程序构件:for循环•语法forvarinsequence:body•循环次数是确定的.(特别地,称为计数循环)•sequence是一个值的序列,如[1,3,5,7,9]或range(10)(即[0,1,…,9]).•body可以是任何语句序列,用左缩进标识.•语义:var依次取遍sequence的每个值,对每一取值执行一次body.19程序的控制流•程序的诸语句通常是顺序执行的,但循环语句改变了控制流,表示一种控制结构.•控制流可以用流程图直观表达20bodyvar取seq的下一个值无有21For循环的例子foriin[0,1,2,3]:print(i)0123foroddin[1,3,5,7]:print(odd*odd)19254922For循环的例子•在chaos.py,range(10)是什么意思?list(range(10))[0,1,2,3,4,5,6,7,8,9]•range是Python内置的函数,它产生一个从0开始的数字序列,所以最后是0-9的10个数。•list也是Python内置的函数,它将序列转换成一个显式的列表。•循环体中的语句(缩进)执行10次。23另一个例子:FutureValue•Program:FutureValue•Inputsprincipal(本金)apr(年利率)•Output十年后的投资收益•Relatonship一年投资的算法:principal*(1+apr)循环十次得十年的总收益24程序与实现:FutureValue•实现–输出一个提示行:print(Thisprogramcalculatesthefuture)print(valueofa10-yearinvestment.)–输入本金、输入年利率(可以合成一行语句)principal=input(Entertheinitialprincipal:)apr=input(Entertheannualinterestrate:)–重复10次:foriinrange(10):–计算公式:principal=principal*(1+apr)–输入十年的投资收益print(Thevaluein10yearsis:,principal)25程序代码:FutureValue#futval.py#Aprogramtocomputethevalueofaninvestment#carried10yearsintothefuturedefmain():print(Thisprogramcalculatesthefuturevalueofa10-yearinvestment.)principal=eval(input(Entertheinitialprincipal:))apr=eval(input(Entertheannualinterestrate:))foriinrange(10):principal=principal*(1+apr)print(Thevaluein10yearsis:,principal)main()26测试程序:FutureValuemain()Thisprogramcalculatesthefuturevalueofa10-yearinvestment.Entertheinitialprincipal:100Entertheannualinterestrate:.03Thevaluein10yearsis:134.391637934main()Thisprogramcalculatesthefuturevalueofa10-yearinvestment.Entertheinitialprincipal:100Entertheannualinterestrate:.10Thevaluein10yearsis:259.37424601futval-g.py(优化)#futval-g.py#Aprogramtocomputethevalueofaninvestment#carried10yearsintothefuturedefmain():printThisprogramcalculatesthefuturevalueofa10yearinvestment.principal,apr=input(Entertheinitialprincipalandtheinterestrate:)foriinrange(10):principal=principal*(1+apr)printThevaluein10yearsis:,principalmain()

1 / 27
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功