Python 语言程序设计3_第1页
Python 语言程序设计3_第2页
Python 语言程序设计3_第3页
Python 语言程序设计3_第4页
Python 语言程序设计3_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三周 分支与循环      3.1 程序基本结构1. 程序流程图 用规定的一系列图形、流程线和文字说明算法中的基本操作和控制流程。    流程图的基本元素包括:(1)表示相应操作的框(2)带箭头的流程线(3)框内外必要的文字说明        2. 设计程序框图的步骤:        (1)用自然语言表述算法步骤        (2)确定步骤逻辑结构,用相应框图表示    &

2、#160;   (3)流程线连接框图,加上终端框,得到整个算法的程序框图3. 任何算法都可以由顺序、选择、循环三种基本结构组合实现: (1)顺序结构:按逻辑顺序自上而下依次运行的结构,如:温度转换程序;(2)选择结构(分支结构):在算法中通过对条件的判断,根据条件是否成立而选择不同流向的算法结构;(3)循环结构:指在一定条件下反复执行某部分代码的操作;3.2 简单分支        例:PM2.5指数分级程序功能IPO模式描述:     

3、0;        输入:接受外部输入PM2.5值              处理:空气质量分级算法              输出:打印空气质量提醒          PM2.5

4、指数分级伪代码              If PM2.5值> 75                     打印空气污染警告           

5、60;  If PM2.5值< 35                     打印空气质量优,建议户外运动          流程图如图所示:程序5:python view plain copy1. #pm25.py  2. #空气质量提醒 &

6、#160;3.    4. def main():  5.     PM = eval(input("What is today'sPM2.5? ")  6.     # 打印相应提醒  7.     if PM > 75:  8. &

7、#160;       print("Unhealthy. Becareful!")  9.     if PM < 35:  10.         print("Good. Go running!")  11. main() &#

8、160;【运行结果】输出:                         输入:What is today'sPM2.5?     90Unhealthy. Becareful!(1)If语句格式:If <condition>:<body>【注】<condition>是条件

9、表达式,<body>是一个或多个语句序列先判断<condition>条件,若true,则执行<body>,再转向下一条语句;若false,则直接跳过<body>,转向下一条语句(2)简单条件构造   简单条件基本形式 <expr><relop> <expr>   <relop>是关系操作符<, <=, =, >=, >, !=   使用“=”表示赋值语句,使用“=”表示等于   

10、0; 除数字外,字符或字符串也可以按照字典顺序用于条件比较   <condition>是布尔表达式,为bool类型布尔值的真假以True和False表示        (3)二分支语法结构If <condition>:                         

11、0;              <statements>else:                                

12、0;       <statements>程序6:python view plain copy1. # quadratic.py  2. # 计算二次方程的实数根程序  3. import math  4. def main():  5.     print("Thisprogram finds the&#

13、160;real solutions to a quadraticn")  6.     a,b,c =eval(input("Please enter the coefficients(a,b,c): ")  7.     delta = b*b -4*a*c  8.    &

14、#160;if delta >= 0:  9.         discRoot =math.sqrt(delta)  10.         root1 = (-b +discRoot) / (2*a)  11.      

15、0;  root2 = (-b -discRoot) / (2*a)  12.        print("nThe solutions are:", root1, root2)  13.     else:  14.       

16、0; print("Theequation has no real roots!")  15. main()  【运行结果】输出:This program finds the real solutions to a quadratic                     &#

17、160;                                                  &

18、#160;    输入:Please enter the coefficients(a,b,c):                      1,2,3The equation has no real roots!3.3 多分支(1)多分支决策要解决双根问题,就需要对delta等于0的情况进行处理。语句的结构上要引入嵌套结构: 当delta < 0,处

19、理无实根情况 当delta = 0,处理实根情况 当delta > 0,处理双根情况一种方案是在程序中使用两个if-else语句。把一个复合语句放到另一个语句的结构之中称为嵌套。1. 多分支决策是解决复杂问题的重要手段之一2. 一个三分之决策可以由两个二分支结构嵌套实现3. 使用if-else描述多分支决策时,实现更多分支需要更多嵌套,影响程序易读性Python使用if-elif-else描述多分支决策,简化分支结构的嵌套问题。格式如下:If <condition1>:         

20、                   <case1 statements>elif<condition2>:                         

21、0;  <case2 statements>elif<condition3>:                            <case3 statements>else:         

22、60;                  <default statements>例:程序7:python view plain copy1. # quadratic.py  2. import math  3. def main():  4.       

23、        print("This program finds the realsolutions to a quadraticn")  5.     a,b,c =eval(input("Please enter the coefficients(a,b,c): ")  6

24、.               delta = b*b - 4*a*c  7.               if a = 0:  8.       &

25、#160;           x = -b/c  9.                   print("nThere is ansolution", x)  10.   

26、60; elif delta < 0:  11.        print("nThe equation has no real roots!")  12.     elif dalta = 0:  13.       &#

27、160; x = -b/(2*a)  14.                   print("nTheere is a double rootat", x)  15.     else:  16.  

28、0;                discRoot = math.sqrt(delta)  17.         root1 = (-b +discRoot) / (2*a)  18.      

29、   root2 = (-b -discRoot) / (2*a)  19.         print("nThesolutions are:", root1, root2)  20. main()  3.4 异常处理       异常处理语句   

30、0;          python使用tryexcept,可使程序不因运行错误而崩溃Python的异常处理语句还可以使用else和finally关键字(可选项,若使用则else必须在finally之前)格式如下:try:                       &

31、#160;          <body>except<ErrorType1>:                                  <handler1&g

32、t;except<ErrorType2>:                                  <handler2>except:         &#

33、160;                        <handler0>                        &#

34、160;   else:                                  <process_else>          

35、;                  finally:                               &#

36、160;  <process_finally>              tryexcept可以捕捉任何类型的错误对于二次方程,还会有其他可能的错误如:输入非数值类型(NameError)输入无效的表达式(SyntaxError)等                此时可以用一个try语句配多个except来实现程序8:python view plain copy1. # 异常

37、处理测试  2. def main():  3.     try:  4.        number1,number2 = eval(input("Enter two numbers,  5. separated by a comma:")  6.    &

38、#160;    result = number1/number2  7.     exceptZeroDivisionError:  8.        print("Division by zero!")  9.     exceptSyntaxError:  10

39、.         print("Acomma may be missing in the input")  11.     else:  12.         print("Noexceptions, the result is&quo

40、t;, result)  13.     finally:  14.        print("executing the final clause")  15. main()  【运行结果】输出:            

41、60;                                               输入:Enter two numbers

42、, separated by a comma: 1 2A comma may be missing in the inputexecuting the final clause Enter two numbers, separated by a comma: 3,2No exceptions, the result is 1.5executing the final clause Enter two numbers, separated by a comma: 3,0Division by zero!executing the final clause· 【实例】

43、三者最大值· 【IPO】 输入:三个数值 处理:三者最大算法 输出:打印最大值· 【算法比较】  通盘比较 将每一个值与其他所有值比较以确定最大值  三个值的情况比较简单,如果是五值比较复杂,而且效率低 (因为表达式没有被充分利用)  决策树 避免冗余比较  结构更加复杂!  顺序处理 逐个扫描每个值,保留最大者 【程序】程序9:# program: maxn.py# 寻找一组数中的最大值def main(): n = eval(input("H

44、ow many numbers are there?") # 将第一个值赋值给max max = eval(input("Enter a number >>") # 连续与后面n-1值进行比较 for i in range(n-1): x = eval(input("Enter a number >>") if x > max: max = x print("The largest value is", max)main()· 1· 2· 3· 4

45、3; 5· 6· 7· 8· 9· 10· 11· 12· 13· 1· 2· 3· 4· 5· 6· 7· 8· 9· 10· 11· 12· 13【运行结果】 How many numbers are there? 5 Enter a number >> 9 Enter a number >> 6 Enter a num

46、ber >> 3 Enter a number >> 10 Enter a number >> 20 The largest value is 20 使用Python内置函数max() 3.5 基本循环结构(1)for循环Python可以使用for语句循环遍历整个序列的值,格式如下:for <var> in <sequence>: <body>· 1· 2· 1· 2在for循环中,循环变量var遍历了队列中的每一个值,循环变量var遍历了队列

47、中的每一个值,循环语句体为每个值执行一次例:for循环求平均数· IPO: 输入:待输入数字个数,数字 处理:平均数算法 输出:平均数 通用设计方案: o 输入数字的个数no 将sum初始化为0o 循环n次: § 输入数字x§ 将x加入sum中o 将sum/n作为平均数输出出来· 程序10:#average1.pyn = eval(input("How many numbers?")sum = 0.0for i in range(n): x = eval(input(&quo

48、t;Enter a number >>") sum = sum + xprint("nThe average is", sum/n)· 1· 2· 3· 4· 5· 6· 7· 1· 2· 3· 4· 5· 6· 7【运行结果】 How many numbers? 3 Enter a number >> 5 Enter a number >> 7 En

49、ter a number >> 6The average is 6.0for循环的缺点:程序开始时必须提供输入数字总数,以提供固定循环次数 大规模数字则需要用户数清楚个数 为此,python提供了另一种循环模式即无限循环,不需要提前知道循环次数(2)while循环语句格式:while <condition> <body>· 1· 2· 1· 2条件总是在循环体执行之前被判断,这种结构又被称为前测循环(当型循环) 如果循环体没有对i初始化或循环体没有累加,条件判断一直为真,循环体将一直执行,

50、即为死循环程序,这时通常使用Ctrl+C来终止一个程序(3)break语句 退出循环例:程序11:#TestBreak.pysum = 0number = 0while number < 20: number += 1 sum += number if sum > 100: breakprint("The number is", number)print("The sum is", sum)· 1· 2· 3· 4· 5· 6· 7· 8· 9· 10· 1· 2· 3· 4· 5· 6· 7· 8· 9· 10【运行结果】 The number is 14 The sum is 105(4)continue 结束本次循环即跳出循环体中下面

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论