基于Python的程序设计思想与方法.ppt

上传人:wuy****n92 文档编号:90660009 上传时间:2023-05-17 格式:PPT 页数:483 大小:1.34MB
返回 下载 相关 举报
基于Python的程序设计思想与方法.ppt_第1页
第1页 / 共483页
基于Python的程序设计思想与方法.ppt_第2页
第2页 / 共483页
点击查看更多>>
资源描述

《基于Python的程序设计思想与方法.ppt》由会员分享,可在线阅读,更多相关《基于Python的程序设计思想与方法.ppt(483页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、程序设计思想与方法程序设计思想与方法翁惠玉翁惠玉Email:程序设计思想与方法-2教材参考教材教材参考教材v教材教材很遗憾很遗憾,暂无合适的中文版教材暂无合适的中文版教材目前使用目前使用:Python Programming:An Introduction to Computer Science.(电子版电子版)How to Think Like a Computer ScientistLearning with Python.(电子版电子版)程序设计思想与方法-3什么是计算机科学什么是计算机科学?v计算机科学并非研究计算机计算机科学并非研究计算机!正如天文学不是研究天文望远镜正如天文学不是研

2、究天文望远镜vCS要回答的基本问题要回答的基本问题:什么是可计算的什么是可计算的?v对此问题的回答有三种方式对此问题的回答有三种方式:实际实际设计设计一个解决问题的算法一个解决问题的算法理论理论分析分析问题的可解性:无解的问题的可解性:无解的,不是能行不是能行可解的可解的通过通过实验实验来研究问题来研究问题.3程序设计思想与方法-4课程主要内容课程主要内容v解决可计算问题需要教会计算机如何解解决可计算问题需要教会计算机如何解决问题决问题v如何教计算机解决问题如何教计算机解决问题了解计算机有哪些基本功能了解计算机有哪些基本功能因材施教,设计教学的过程因材施教,设计教学的过程一门与计算机进行交流的

3、语言一门与计算机进行交流的语言程序设计思想与方法-5对本课程的定位对本课程的定位v学习计算机科学解决问题的思想方法学习计算机科学解决问题的思想方法,应用于应用于其他专业领域其他专业领域v不是程序设计语言课程不是程序设计语言课程!本课程需要编程本课程需要编程,以加深对计算思维的理解以加深对计算思维的理解坏消息坏消息:学习编程语言需要掌握非常繁琐的细节学习编程语言需要掌握非常繁琐的细节好消息:好消息:Python语言非常简单语言非常简单,易学易用易学易用v也不是算法和数据结构课程也不是算法和数据结构课程!当然会学习这方面的一些基本技术当然会学习这方面的一些基本技术5程序设计思想与方法-6计算机与程

4、序v计算机组成计算机组成v程序设计语言程序设计语言v初识初识Python程序设计思想与方法-7计算机的组成计算机的组成v硬件:计算机的躯壳硬件:计算机的躯壳v软件:计算机的灵魂软件:计算机的灵魂计算机,也被称之为计算机,也被称之为“电脑电脑”,是一种能够按照事先,是一种能够按照事先存储的程序自动、高效地对数据进行输入、处理、存存储的程序自动、高效地对数据进行输入、处理、存储和输出的系统储和输出的系统程序设计思想与方法-8计算机硬件存储器存储器输入设备输入设备输出设备输出设备控制器控制器运算器运算器CPU程序设计思想与方法-9存储器v保存正在运行的程序代码和数据保存正在运行的程序代码和数据v内存

5、的最小单元是内存的最小单元是bitbit,一个,一个bitbit存储一个二进存储一个二进制位。一般制位。一般8 8个个bitbit组成一个组成一个bytebyte,若干个,若干个bytebyte组成一个组成一个wordwordv在一般的机器中,内存按字节编址,内存大小在一般的机器中,内存按字节编址,内存大小也是按字节计量也是按字节计量v关机后,内存的数据全部丢失关机后,内存的数据全部丢失程序设计思想与方法-10CPUCPU(Central Processing Unit)有两个有两个部件组成:部件组成:vALU Arithmetic-Logic Unit(运算(运算器)器)vControl u

6、nit(控制器)(控制器)程序设计思想与方法-11控制器v控制器控制计算机的其余部分如何完成控制器控制计算机的其余部分如何完成程序的指令程序的指令指挥内存和其它部件之间的信息的传送指挥内存和其它部件之间的信息的传送(包括信息和指令)(包括信息和指令)指挥指挥CPU和输入输出设备之间的控制信息和输入输出设备之间的控制信息的传送的传送程序设计思想与方法-12控制器中的信息存储v控制器中有两个寄存器:控制器中有两个寄存器:指令寄存器指令寄存器(IR):保存当前正在执行的指:保存当前正在执行的指令令程序计数器程序计数器(PC):保存下一条要执行的指:保存下一条要执行的指令地址令地址程序设计思想与方法-

7、13控制器的工作v取下一条指令:按取下一条指令:按PCPC指定的地址到内存指定的地址到内存中取出下一条指令,存入中取出下一条指令,存入IRIR。v解码指令:将指令解码成一系列的控制解码指令:将指令解码成一系列的控制信号信号v执行指令:将控制信号发送给相关部件,执行指令:将控制信号发送给相关部件,执行相应的运算执行相应的运算程序设计思想与方法-14运算器的组成v逻辑电路:执行控制器发出的控制信号逻辑电路:执行控制器发出的控制信号v一组存放正在运算的数据的寄存器一组存放正在运算的数据的寄存器程序设计思想与方法-15输入输出设备输入输出设备v输入设备将人能理解的符号转换成计算输入设备将人能理解的符号

8、转换成计算机能处理的符号。常用的输入设备有:机能处理的符号。常用的输入设备有:键盘、鼠标、光笔等键盘、鼠标、光笔等v输出设备将计算机的输出转换成人能理输出设备将计算机的输出转换成人能理解的输出。常用的输出设备有:显示器、解的输出。常用的输出设备有:显示器、打印机、音响设备等打印机、音响设备等程序设计思想与方法-16计算机的组成计算机的组成v硬件:计算机的躯壳硬件:计算机的躯壳v软件:计算机的灵魂软件:计算机的灵魂计算机,也被称之为计算机,也被称之为“电脑电脑”,是一种能够按照事先,是一种能够按照事先存储的程序自动、高效地对数据进行输入、处理、存存储的程序自动、高效地对数据进行输入、处理、存储和

9、输出的系统储和输出的系统程序设计思想与方法-17计算机软件计算机软件v软件决定了计算机能做什么软件决定了计算机能做什么.没有软件没有软件,计算机只是计算机只是一堆废铁一堆废铁.v软件可以分为系统软件和应用软件。软件可以分为系统软件和应用软件。v系统软件居于计算机系统中最靠硬件的部分,它系统软件居于计算机系统中最靠硬件的部分,它将计算机的用户与硬件隔离。系统软件与具体的将计算机的用户与硬件隔离。系统软件与具体的应用无关,但其他的软件要通过系统软件才能发应用无关,但其他的软件要通过系统软件才能发挥作用。常用的系统软件有操作系统、编译器、挥作用。常用的系统软件有操作系统、编译器、网络软件等。网络软件

10、等。v应用软件是为了支持某一应用而开发的软件。如应用软件是为了支持某一应用而开发的软件。如字处理软件、财务软件等。字处理软件、财务软件等。程序设计思想与方法-18计算机与程序v计算机组成计算机组成v程序设计语言程序设计语言v初识初识Python程序设计思想与方法-19程序设计语言程序设计语言v人与计算机进行交流的一种语言人与计算机进行交流的一种语言v为什么不用自然语言与计算机交互?为什么不用自然语言与计算机交互?精确的语法和语义精确的语法和语义无二义性无二义性v有不同层次的程序设计语言有不同层次的程序设计语言Lu Chaojun,SJTU 19程序设计思想与方法-20不同层次的程序设计语言v机

11、器语言机器语言v汇编语言汇编语言v高级语言高级语言程序设计思想与方法-21机器语言v是机器的母语。每种计算机都有自己的机器语是机器的母语。每种计算机都有自己的机器语言。与计算机硬件设计有关。言。与计算机硬件设计有关。v每个语句用一组二进制数表示每个语句用一组二进制数表示v用机器语言写程序是非常困难的,读机器语言用机器语言写程序是非常困难的,读机器语言写的程序也是非常困难的写的程序也是非常困难的v机器语言提供的功能非常简单机器语言提供的功能非常简单程序设计思想与方法-22汇编语言v用缩写和助记符代替机器语言的用缩写和助记符代替机器语言的0和和1的比特串的比特串v和机器语言一样,不同类的机器有不同

12、的汇编语言和机器语言一样,不同类的机器有不同的汇编语言v汇编程序:将汇编语言写的程序翻译成机器语言的汇编程序:将汇编语言写的程序翻译成机器语言的程序程序v解决了机器语言的可读性问题,但没有解决功能简解决了机器语言的可读性问题,但没有解决功能简单的问题以及可移植型问题单的问题以及可移植型问题程序设计思想与方法-23高级语言v类似于英语的语言,适合于人理解类似于英语的语言,适合于人理解v功能比机器语言强,解决问题更加容易功能比机器语言强,解决问题更加容易v编译器:将过程化语言写的程序(源代码)翻译成编译器:将过程化语言写的程序(源代码)翻译成机器语言的程序(目标代码)机器语言的程序(目标代码)v解

13、释器:逐句解释源程序并执行,不保存目标代码。解释器:逐句解释源程序并执行,不保存目标代码。程序设计思想与方法-24编译执行编译执行main()int i,s;i=1;s=0;C compiler0110001011101001Source programObject program将程序全部翻译成机器语言的程序,然后再执行。程序设计思想与方法-25解释执行源程序源程序 解释系统解释系统(逐句解释、执行)(逐句解释、执行)原始数据原始数据结果结果程序设计思想与方法-26高级语言的特点v具备了一定的机器独立性,使用户可以具备了一定的机器独立性,使用户可以专注于解决问题的方法。但某些方面还专注于解决

14、问题的方法。但某些方面还是受到机器的限制是受到机器的限制v为了解决移植性问题,为了解决移植性问题,ANSIANSI制订了一系制订了一系列的标准列的标准程序设计思想与方法-27高级语言高级语言v本课程采用本课程采用Python语言语言v高级程序设计语言有很多种,据说高级程序设计语言有很多种,据说2008年年网上被引用最多的网上被引用最多的10个语言是个语言是(按字母顺序按字母顺序):C,C+,C#,Java,JavaScript,Perl,PHP,Python,Ruby,SQL27程序设计思想与方法-28计算机与程序v计算机组成计算机组成v程序设计语言程序设计语言v初识初识Python程序设计思

15、想与方法-29PythonvPython采用编译采用编译/解释混合方式解释混合方式:先编译先编译成字节码,再解释执行成字节码,再解释执行vPython 软件软件:ftp:/用户码用户码/密码:密码:hyweng/publicv启动启动Python29程序设计思想与方法-30初识初识Pythonv:提示符,提示你可以输入命令:提示符,提示你可以输入命令v语句:一条命令,如语句:一条命令,如print“hello”v串:串:“hello world”v数:数:3、10v表达式:表达式:3+5v赋值:赋值:x=530程序设计思想与方法-31函数函数v函数:将完成某一功能的语句组合起来函数:将完成某一

16、功能的语句组合起来v函数定义函数定义v函数调用:函数调用:def area():x=5 y=6 print x*y area()30程序设计思想与方法-32带参数的函数带参数的函数v函数定义函数定义 v函数的调用函数的调用 def area(x,y):print x*y area(3,4)12area(2,4)8程序设计思想与方法-33模块模块v如果一段程序需要反复执行,可以把它以文如果一段程序需要反复执行,可以把它以文件形式保存在外存储器中。件形式保存在外存储器中。v保存在外存储器中的程序称为一个模块,也保存在外存储器中的程序称为一个模块,也称为脚本文件或源文件。称为脚本文件或源文件。vPY

17、THON的源文件的后缀名为的源文件的后缀名为pyv程序模拟物理现象程序模拟物理现象:chaos程序程序程序设计思想与方法-34#File:chaos.py#A simple program illustrating chaotic behavior.def main():print This program illustrates a chaotic function x=input(Enter a number between 0 and 1:)for i in range(10):x=3.9*x*(1-x)print x input(Enter 0 to quit)main()程序设计思想

18、与方法-35vmain函数:标志程序的开始,也可以省函数:标志程序的开始,也可以省略略v注释注释v变量与赋值变量与赋值v程序的执行:一个个语句顺序执行,但程序的执行:一个个语句顺序执行,但也可以重复执行某个语句也可以重复执行某个语句程序设计思想与方法-36for循环循环v将一段语句重复执行多次将一段语句重复执行多次v语法语法for in:是一个值的序列是一个值的序列,如如1,3,5,7,9或或range(10)(即即0,1,9).可以是任何语句序列可以是任何语句序列,用左缩进标识用左缩进标识.36程序设计思想与方法-37程序的控制流程序的控制流v程序的诸语句通常程序的诸语句通常是顺序执行的是顺

19、序执行的,但循但循环语句改变了控制环语句改变了控制流流,表示一种控制结表示一种控制结构构.v控制流可以用流程控制流可以用流程图直观表达图直观表达37取取的下一个值的下一个值无无有有程序设计思想与方法-38保存文件保存文件v用任何一个文本编辑器,保存成纯文本用任何一个文本编辑器,保存成纯文本格式格式v在在IDLE中的中的file菜单中选择菜单中选择new window,输入程序的内容。输入结束后再在,输入程序的内容。输入结束后再在file菜单中选择菜单中选择save或或save as保存到文件中保存到文件中程序设计思想与方法-39模块的执行模块的执行v在在IDLE中执行程序中执行程序打开文件:在

20、打开文件:在file菜单下选菜单下选open或直接用右键点或直接用右键点击文件,并选择用击文件,并选择用IDLE打开,或先打开打开,或先打开IDLE,再在,再在file菜单下选择菜单下选择open执行:在执行:在run菜单下选菜单下选run module或直接按或直接按f5vCmd界面中执行程序界面中执行程序import文件文件程序设计思想与方法-40添加添加python的路径的路径vImport时,系统必须知道到哪里去找那个文件时,系统必须知道到哪里去找那个文件v这是通过这是通过PYTHONPATH指定的指定的v安装安装PYTHON时,系统会指定缺省时,系统会指定缺省path。缺省的。缺省的

21、路径是路径是:Python26Libsite-packagesv添加搜索路径添加搜索路径右键单击我的电脑,然后单击属性。右键单击我的电脑,然后单击属性。单击高级选项卡。单击高级选项卡。单击环境变量。单击环境变量。单击新建添加一个新变量名和值。单击新建添加一个新变量名和值。程序设计思想与方法-41END程序设计思想与方法-42写一个简单的程序写一个简单的程序软件开发过程软件开发过程程序实例:温度转换程序实例:温度转换程序的构件程序的构件程序实例:利息计算程序实例:利息计算程序设计思想与方法-43程序设计需要系统化的方法程序设计需要系统化的方法v程序设计是用精确的语言告诉计算机该做什么程序设计是用

22、精确的语言告诉计算机该做什么,要精确到最细节处要精确到最细节处.计算机只会做很简单的事情,只能刻板地执行程序计算机只会做很简单的事情,只能刻板地执行程序.v一方面要写大型程序一方面要写大型程序,一方面要精确到细枝末节一方面要精确到细枝末节,这极具挑战性这极具挑战性.细节上的微小差错可带来巨大灾难细节上的微小差错可带来巨大灾难.例如例如1996年阿丽亚娜年阿丽亚娜5火箭首次鉴定发射失败的原因火箭首次鉴定发射失败的原因是将一个浮点数转换为整数的代码有问题是将一个浮点数转换为整数的代码有问题.43程序设计思想与方法-44软件开发过程软件开发过程v需求分析:问题是什么需求分析:问题是什么?v制定程序规

23、格:程序要做什么制定程序规格:程序要做什么?对简单程序描述输入输出即可对简单程序描述输入输出即可.v设计:程序怎么做设计:程序怎么做?主要任务是设计出满足规格的算法主要任务是设计出满足规格的算法一般用伪代码给出总体结构一般用伪代码给出总体结构,不纠缠细节不纠缠细节.v实现:用某种程序设计语言翻译设计实现:用某种程序设计语言翻译设计.v测试与排错:测试程序是否如预期测试与排错:测试程序是否如预期,排除排除bug.v维护:运行中还会不断有问题维护:运行中还会不断有问题.44程序设计思想与方法-45写一个简单的程序写一个简单的程序软件开发过程软件开发过程程序实例:温度转换程序实例:温度转换程序的构件

24、程序的构件程序实例:利息计算程序实例:利息计算程序设计思想与方法-46温度转换温度转换v需求:预报摄氏度需求:预报摄氏度,想知道对应华氏度想知道对应华氏度.v规格:输入摄氏度规格:输入摄氏度,显示输出华氏度显示输出华氏度.两者两者对应关系是对应关系是F=(9/5)C+32.v设计算法:简单的设计算法:简单的IPOv实现:翻译成实现:翻译成Python程序程序v测试:常用边界数据测试:常用边界数据.如输入如输入0,10046程序设计思想与方法-47算法设计算法设计v将完成任务的步骤分解成计算机能完成将完成任务的步骤分解成计算机能完成的动作的动作v伪代码写的算法伪代码写的算法:输入摄氏度:输入摄氏

25、度:celsius计算华氏度:计算华氏度:fahrenheit=9/5 celsius+32显示输出:显示输出:fahrenheit47程序设计思想与方法-48Python程序程序#convert.py#convert Celsius temps to Fahrenheitdef main():celsius=input(What is the Celsius temperature?)fahrenheit=9.0/5.0*celsius+32print The temperature is,fahrenheit,degrees Fahrenheit.”main()程序设计思想与方法-49写一

26、个简单的程序写一个简单的程序软件开发过程软件开发过程程序实例:温度转换程序实例:温度转换程序的构件程序的构件程序实例:利息计算程序实例:利息计算程序设计思想与方法-50程序的构成程序的构成v各种名字:各种名字:main、celsius等等v输输入:入:celsius=input(What is the Celsius temperature?)v表达式:表达式:9.0/5.0*celsius+32v赋值赋值:fahrenheit=9.0/5.0*celsius+32v输输出:出:print The temperature is,fahrenheit,degrees Fahrenheit.”程序

27、设计思想与方法-51标识符标识符v标识符标识符:值值,变量变量,函数函数,模块等的名字模块等的名字.v标识符命名规则标识符命名规则字母下划线开头字母下划线开头,后接字母数字下划线后接字母数字下划线大小写敏感大小写敏感标识符不能是保留词标识符不能是保留词v良好编程风格良好编程风格选择有意义的名字:变量名一般是名词短语,函数选择有意义的名字:变量名一般是名词短语,函数名一般是动词短语名一般是动词短语风格统一风格统一.51程序设计思想与方法-52表达式表达式v表达式:与数学中类似。如表达式:与数学中类似。如3.9*x*(1 x)v参加运算的可以是常量、变量参加运算的可以是常量、变量v运算符:运算符:

28、+、-、*、/、*(指数运算)(指数运算)v可以用括号改变优先级可以用括号改变优先级v良好编程风格:用空格、括号增加可读性良好编程风格:用空格、括号增加可读性.52程序设计思想与方法-53输出语句输出语句v输出语句输出语句print的语法的语法:printprint print,print,vprint的语义的语义:自左向右计算表达式的值并在一自左向右计算表达式的值并在一行上显示行上显示,值之间以空格隔开值之间以空格隔开.最后输出换行最后输出换行,但以逗号结尾时不换行但以逗号结尾时不换行.53程序设计思想与方法-54赋值语句赋值语句v语法语法=v语义语义:计算表达式计算表达式的值的值,存入变量

29、存入变量.v一个变量可被多次赋值一个变量可被多次赋值,但总是持有最后一但总是持有最后一次赋值的结果次赋值的结果.54程序设计思想与方法-55输入输入赋值语句赋值语句v输入赋值语句输入赋值语句=input()v语义语义计算计算的值的值(通常是字符串通常是字符串),显示该值显示该值等待用户输入一个表达式等待用户输入一个表达式(以回车键结束以回车键结束)计算用户输入的表达式计算用户输入的表达式,得到得到input()的值的值把把input()的值存入的值存入.v良好风格良好风格用用提醒用户输入提醒用户输入以空格结束以空格结束.(Why?)55程序设计思想与方法-56同时赋值语句同时赋值语句v同时赋值

30、:同时赋值:,.,=,.,v语义语义:计算右边各表达式的值计算右边各表达式的值,分别存入左边的分别存入左边的对应变量对应变量.v应用同时赋值交换两个变量应用同时赋值交换两个变量传统语言的做法传统语言的做法:引入一临时变量引入一临时变量Python可以可以:x,y=y,xvinput()也可为多个变量同时赋值也可为多个变量同时赋值x,y=input(“input x,y”)执行到此语句时用户可输入:执行到此语句时用户可输入:3,4,则,则x=3,y=456程序设计思想与方法-57写一个简单的程序写一个简单的程序软件开发过程软件开发过程程序实例:温度转换程序实例:温度转换程序的构件程序的构件程序实

31、例:利息计算程序实例:利息计算程序设计思想与方法-58利息计算利息计算v需求:给定本金和利率,计算需求:给定本金和利率,计算10年后的年后的本利之和本利之和v规格:明年的本金之和规格:明年的本金之和=今年的本金今年的本金*(1+利率)利率)程序设计思想与方法-59算法过程算法过程程序设计思想与方法-60Python程序程序#interest.py#coding=gbkdef main():print 这是一个计算这是一个计算10年后本利之和的程序年后本利之和的程序 balance=input(请输入本金请输入本金:)rate=input(请输入利率请输入利率:)for i in range(9

32、):balance=balance*(1+rate)print balancemain()程序设计思想与方法-61上机作业上机作业v修改修改interest.py,使它能输出每一年的,使它能输出每一年的本利之和。例如本利之和。例如年份年份 本利之和本利之和=1 1012 102.23 104.5程序设计思想与方法-62END程序设计思想与方法-63数值计算数值计算数值数据的类型数值数据的类型数学库的使用数学库的使用求阶乘求阶乘整型数的限制整型数的限制处理大整型处理大整型类型转换类型转换程序设计思想与方法-64数据类型数据类型v程序存储与操作的信息称为数据程序存储与操作的信息称为数据.v数据类型

33、数据类型不同的数据表示方式不同的数据表示方式不同的操作不同的操作程序设计思想与方法-65数值数据类型数值数据类型v整数类型整数类型int不带小数点不带小数点可存储整数的精确值可存储整数的精确值v浮点数类型浮点数类型float带小数点带小数点计算机只能存储浮点数的近似值计算机只能存储浮点数的近似值vtype()函数函数返回值的类型返回值的类型65程序设计思想与方法-66整型数的内部表示整型数的内部表示v整型数在内部用补码表示整型数在内部用补码表示v正数的补码是它的二进制表示,负数的补码是它的正数的补码是它的二进制表示,负数的补码是它的绝对值的二进制的每一位取反后再加绝对值的二进制的每一位取反后再

34、加1 1。如用。如用8 8位表位表示一个整数,那么:示一个整数,那么:6262补补=0 0111110=0 0111110 -62 -62补补=1 1000010=1 1000010v在补码表示中,最高位是符号。在补码表示中,最高位是符号。0 0为正数,为正数,1 1为负数为负数vPython中的整数用中的整数用32位表示位表示,则则int范围为范围为 231 231 1,即,即-2147483648 2147483647程序设计思想与方法-67实型数的表示实型数的表示v定点表示:小数点的位置固定不变定点表示:小数点的位置固定不变v浮点表示:小数点位置不固定。一个浮点数浮点表示:小数点位置不固

35、定。一个浮点数分成尾数和阶码两部分。阶码表示小数点在分成尾数和阶码两部分。阶码表示小数点在该数中的位数,尾数表示数的有效数值。如该数中的位数,尾数表示数的有效数值。如十进制数十进制数N=246.135N=246.135,其浮点表示可为:,其浮点表示可为:N=246135*10-3=2461350*10-4 =0.246135*103 =0.0246135*104程序设计思想与方法-68浮点数的存储浮点数的存储v当字长一定时,分配给阶码的位数越多,当字长一定时,分配给阶码的位数越多,表示数的范围越大,但分配给尾数的位数表示数的范围越大,但分配给尾数的位数将减少,从而降低数的精度。将减少,从而降低

36、数的精度。符号位 阶码 尾数程序设计思想与方法-69数值运算符数值运算符运算符运算符整数整数浮点数浮点数 加加加加 减减减减 乘乘乘乘 除除(结果取整结果取整)除除乘方乘方乘方乘方余数余数(商取整时的商取整时的)余数余数abs()绝对值绝对值绝对值绝对值69运算数都是整数运算数都是整数,结果为整数结果为整数;至少有一个运算数是浮点数至少有一个运算数是浮点数,结果为浮点数结果为浮点数.程序设计思想与方法-70数值计算数值计算数值数据的类型数值数据的类型数学库的使用数学库的使用求阶乘求阶乘整型数的限制整型数的限制处理大整型处理大整型类型转换类型转换程序设计思想与方法-71数学库数学库v其他的数学运

37、算都包含在一个库中其他的数学运算都包含在一个库中v库是系统或其他用户已经写好的一些有用库是系统或其他用户已经写好的一些有用的程序。一般一个功能表示为一个函数的程序。一般一个功能表示为一个函数v数学库数学库:支持各类数学计算的函数支持各类数学计算的函数.v数学库的引入数学库的引入:import mathv数学库中函数的调用数学库中函数的调用:例如求平方根例如求平方根math.sqrt()程序设计思想与方法-72求一元二次方程解求一元二次方程解#equation1.pyimport mathdef main():a,b,c=input(Enter three coefficients:)discR

38、oot=math.sqrt(b*b-4*a*c)r1=(-b+discRoot)/(2*a)r2=(-b-discRoot)/(2*a)print The solutions are:,r1,r2main()72引用数学函数库中的引用数学函数库中的函数函数程序设计思想与方法-73数学库中的常用函数数学库中的常用函数pi:常数常数 e:常数常数esqrt(x):平方根平方根sin(x),cos(x),tan(x),asin(x),acos(x),atan(x):三角函数三角函数log(x),log10(x):自然对数与常用对数自然对数与常用对数exp(x):e的的x次方次方ceil(x):x的最

39、小整数的最小整数floor(x):x的最大整数的最大整数程序设计思想与方法-74数值计算数值计算数值数据的类型数值数据的类型数学库的使用数学库的使用累积累积整型数的限制整型数的限制处理大整型处理大整型类型转换类型转换程序设计思想与方法-75一种常用算法模式一种常用算法模式:累积累积v最终结果是由逐个中间结果累积起来形成的最终结果是由逐个中间结果累积起来形成的.例如例如6!的计算的计算:先算先算6*5,再再*4,再再*1而得而得.1+2+3+4+100:先计算:先计算1+2,再加,再加3,v这种累积程序需要一个存放累积结果的变量这种累积程序需要一个存放累积结果的变量,累积过累积过程是一个循环程是

40、一个循环:初始化初始化累积变量累积变量循环循环直至得到最终结果直至得到最终结果 计算计算累积变量的当前累积值累积变量的当前累积值程序设计思想与方法-76累积(累积(续续)v初始化初始化:给累积变量一个合适的初值给累积变量一个合适的初值,以便以便进入循环后能正确计算进入循环后能正确计算.忘记初始化是一个常见编程错误忘记初始化是一个常见编程错误!v循环过程:将一个个值累积到累积变量中循环过程:将一个个值累积到累积变量中程序设计思想与方法-77阶乘计算程序阶乘计算程序v具体数具体数(如如6)的阶乘的阶乘fact=1for f in 6,5,4,3,2,1:fact=fact*fv一般情形一般情形n=

41、input(Enter a number:)fact=1for f in range(n,1,-1):fact=fact*fprint The factorial of,n,is,fact程序设计思想与方法-78阶乘程序的几点注解阶乘程序的几点注解v由于乘法结合律由于乘法结合律,累积的次序是不重要的累积的次序是不重要的.如按下面的循环来累积如按下面的循环来累积:for f in 2,3,4,5,6:for f in 2,4,6,1,3,5:for f in range(2,n+1)vrange()函数函数range(n)range(start,n)range(start,n,step)vfac

42、t也可初始化为也可初始化为n程序设计思想与方法-79求求1到到100的和的和sum=0for i in range(1,101):sum=sum+iprint sum程序设计思想与方法-80数值计算数值计算数值数据的类型数值数据的类型数学库的使用数学库的使用求阶乘求阶乘整型数的限制整型数的限制处理大整型处理大整型类型转换类型转换程序设计思想与方法-81整数的限制整数的限制vint型在内存占用的空间是有限的,因型在内存占用的空间是有限的,因此能表示的数值范围也是有限的。此能表示的数值范围也是有限的。vPython中的整数用中的整数用32位表示位表示,只能表只能表示示-2147483648 214

43、7483647v浮点数同样也有这个问题浮点数同样也有这个问题程序设计思想与方法-82数值计算数值计算数值数据的类型数值数据的类型数学库的使用数学库的使用求阶乘求阶乘整型数的限制整型数的限制处理大整型处理大整型类型转换类型转换程序设计思想与方法-83大数的表示大数的表示vlong int:不定长,可扩至任意长度不定长,可扩至任意长度(当然受当然受限于存储器容量限于存储器容量).如如注意注意:5L和和5有完全不同的表示有完全不同的表示有长整数参加的运算有长整数参加的运算,结果为长整数结果为长整数.long int运算效率远低于运算效率远低于int,因此能用因此能用int就不用就不用long int

44、.v浮点数很大时用科学表示法浮点数很大时用科学表示法:1.234e+12最大数最大数:1e+308程序设计思想与方法-84求阶乘的更好的实现求阶乘的更好的实现n=input(Enter a number:)fact=1Lfor f in range(n,1,-1):fact=fact*fprint The factorial of ,n,“is,fact阶乘增长很快,结果很容易超出阶乘增长很快,结果很容易超出int的范围的范围现在的Python环境都能自动执行int到大整数的转换。当超出int范围时,自动转换为大整型程序设计思想与方法-85数值计算数值计算数值数据的类型数值数据的类型数学库的使

45、用数学库的使用求阶乘求阶乘整型数的限制整型数的限制处理大整型处理大整型类型转换类型转换程序设计思想与方法-86类型转换类型转换vPython只会做同类型的运算,运算结果与运算数类型相同。只会做同类型的运算,运算结果与运算数类型相同。v在混合类型表达式中,在混合类型表达式中,Python自动转换自动转换:int long floatv人工转换人工转换:利用利用int(),long(),float()小测验小测验:求整数的平均值时用哪个好求整数的平均值时用哪个好?avg=sum/countavg=float(sum)/countavg=float(sum/count)v浮点数取整时如何做到四舍五入

46、浮点数取整时如何做到四舍五入?int(x+0.5)round()程序设计思想与方法-87END程序设计思想与方法-88字符串处理字符串处理文本数据文本数据简单的字符串处理简单的字符串处理字符串的机内表示字符串的机内表示字符串和密码字符串和密码格式化输出格式化输出文件处理文件处理程序设计思想与方法-89文本数据文本数据v计算机应用从科学计算转向信息管理计算机应用从科学计算转向信息管理.v信息管理中大量的数据都是文本数据信息管理中大量的数据都是文本数据.如姓名,地址,简历等等如姓名,地址,简历等等v计算机中用字符串来表示文本数据计算机中用字符串来表示文本数据.89程序设计思想与方法-90字符串类型

47、字符串类型v字符串字符串:字符序列字符序列v字符串字面值字符串字面值:用一对引号用一对引号(单或双单或双)标明标明.“hello world”!#$%&*“汉字也是字符汉字也是字符”v字符串中包含引号怎么办字符串中包含引号怎么办?包含单引号包含单引号:串用双引号括住串用双引号括住包含双引号包含双引号:串用单引号括住串用单引号括住两者都有两者都有:更一般的方法是串中用转义字符更一般的方法是串中用转义字符print“Alice said,“Hello,Bob”程序设计思想与方法-91字符串处理字符串处理文本数据文本数据简单的字符串处理简单的字符串处理字符串的机内表示字符串的机内表示字符串和密码字符

48、串和密码格式化输出格式化输出文件处理文件处理程序设计思想与方法-92字符串的输入字符串的输入v普通变量的输入普通变量的输入num=input(“Enter a number:“)Enter a number:5.6变变量量num得到得到值值 5.6v如果用同如果用同样样的方法的方法输输入字符串入字符串str=input(“Enter a string:“)Enter a string:JohnPython会会输输出出出出错错信息信息v原因原因:input()是把输入当成表达式来计算是把输入当成表达式来计算的的!92程序设计思想与方法-93字符串的正确输入字符串的正确输入v输入时加上引号输入时加

49、上引号str=input(“Enter a string:“)Enter a string:JohnEnter a string:“John”v使用使用raw_input()str=raw_input(“Enter a string:“)Enter a string:John程序设计思想与方法-94input与与raw_inputx=input()x=raw_input()“John”Johnx xJohn Johnx=input()x=raw_input()3*4+2 3*4+2x x14 3*4+294程序设计思想与方法-95字符串赋值字符串赋值字符串可以直接赋值字符串可以直接赋值Str=

50、abcdeStrabcde程序设计思想与方法-96取字符取字符v字符串是字符序列字符串是字符序列,可通过位置索引访问每个字符可通过位置索引访问每个字符.v对长度为对长度为n的字符串的字符串,索引可以索引可以是大于是大于0的数的数:自左向右为自左向右为0 n 1,或者或者是负数是负数:自右向左为自右向左为 1,2,3,n v例如例如:若若str=“Hello Bob”,则则str0或或str 9是是Hstr5或或str 4是是 str8或或str 1是是bstr9或或str 10越界出错越界出错程序设计思想与方法-97取子串取子串v切段切段:取一个索引范围内的字符取一个索引范围内的字符.:所取子

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁