第3章+选择与循环

上传人:E**** 文档编号:91555429 上传时间:2019-06-29 格式:PPTX 页数:118 大小:2.01MB
返回 下载 相关 举报
第3章+选择与循环_第1页
第1页 / 共118页
第3章+选择与循环_第2页
第2页 / 共118页
第3章+选择与循环_第3页
第3页 / 共118页
第3章+选择与循环_第4页
第4页 / 共118页
第3章+选择与循环_第5页
第5页 / 共118页
点击查看更多>>
资源描述

《第3章+选择与循环》由会员分享,可在线阅读,更多相关《第3章+选择与循环(118页珍藏版)》请在金锄头文库上搜索。

1、第3章 选择与循环,肖川 ,outline,条件表达式 选择结构 单分支 双分支 多分支 嵌套 循环结构 for循环与 while循环 循环结构的优化 break 和 continue语句 案例精选,选择与循环的流程图,条件表达式,语句块2,语句块1,条件表达式,语句块,True,False,True,False,条件表达式,条件表达式,算术运算符:+、-、*、/、/、%、* 关系运算符:、=、!=,可以连续使用 print(1 print(13) False print(12) True print(1,不能包含 赋值= 运算符,条件表达式,0值或空值与False等价,非0、非空与True等

2、价 在选择和循环结构中,条件表达式的值只要不是False、0(或0.0、0j等)、空值None、空列表、空元组、空集合、空字典、空字符串、空range对象或其他空迭代对象,Python解释器均认为与True等价。 从这个意义上来讲,几乎所有的Python合法表达式都可以作为条件表达式,包括含有函数调用的表达式。,任何对象均对应 布尔值(True / False), 故任何对象均可用作条件表达式,条件表达式, if 3: #使用整数作为条件表达式 print(5) 5 a = 1, 2, 3 if a: #使用列表作为条件表达式 print(a) 1, 2, 3,从语法上说没有问题, 这种判断有

3、实际意义吗?,零值判断的等价表示,判断对象为空/零值的简略写法,对象直接作为条件表达式的实际意义, if 3: # 等价于 if 3!=0: print(5) 5 a = 1, 2, 3 if a: # 等价于 if a!=: print(a) 1, 2, 3,对象直接作为条件表达式的实际意义, a = if a: print(a) else: print(empty) empty,# 等价于 if a!=:,# 等价于 a=:, a = if not a: print(empty) else: print(a) empty,1+2+3+8+9+10, i = s = 0 while i pr

4、int(s) 55,1+2+3+8+9+10, i = s = 0 while True: #使用常量True作为条件表达式 s += i i += 1 if i 10: break print(s) 55, s = 0 for i in range( 11 ): s += i print(s) 55,练习:根据输入半径求面积,逻辑运算符,and (并且) 表达式1 and 表达式2 只要有一个表达式为False,结果就为False 必须两个表达式均为True,结果才为True or (或者) 表达式1 or 表达式2 只要有一个表达式为True,结果就为True 必须两个表达式均为False

5、,结果才为False not (否定) not 表达式 结果与表达式的布尔值相反,练习:判断数x是否为偶数,x % 2 = 0,练习:判断数x是否为 被3整除的偶数,x % 2 = 0 and x % 3 = 0 等价于 (x % 2 = 0) and (x % 3 = 0) 等价于 x % 6 = 0,练习:判断数x是否为 2位数的偶数,判别某一年份是否为闰年,闰年条件:每四年一个闰年,但每100年少一个闰年,每400年又增加一个闰年。 year能被4整除 且 不能被100整除 或 year能被400整除 (year%4=0 and year%100!=0) or (year%400=0),

6、运算符的优先级,高,低,条件表达式 and 的惰性求值,如果“表达式1”的值为“False”或等价的值时,不论“表达式2”的值是什么,整个表达式的值都是“False”,此时“表达式2”的值无论是什么都不影响整个表达式的值,因此“表达式2”将不会被计算,整个表达式返回值为表达式1的值。,表达式1 and 表达式2,条件表达式 or 的惰性求值,如果“表达式1”的值为“True”或等价的值时,不论“表达式2”的值是什么,整个表达式的值都是“True”,此时“表达式2”的值无论是什么都不影响整个表达式的值,因此“表达式2”将不会被计算,整个表达式返回值为表达式1的值。,表达式1 or 表达式2,惰性

7、求值实例,例如,下面的函数用来使用用户指定的分隔符将多个字符串连接成一个字符串,如果用户没有指定分隔符则使用逗号。 def Join(chList, sep=None): return (sep or ,).join(chList) chTest = 1, 2, 3, 4, 5 Join(chTest) # 调用函数 1,2,3,4,5 Join(chTest, :) # 调用函数 1:2:3:4:5 Join(chTest, ) # 调用函数 1 2 3 4 5,条件表达式,条件表达式中不允许使用赋值运算符“=”,避免了其他语言中误将关系运算符“=”写作赋值运算符“=”带来的麻烦 在条件表达

8、式中使用赋值运算符“=”将抛出异常,提示语法错误。 if a=3: SyntaxError: invalid syntax if (a=3) and (b=4): SyntaxError: invalid syntax,选择结构,单分支选择结构,if 条件表达式: 语句块,条件表达式,语句块,True,False,单分支选择结构,#以下语句隐含了序列解包的操作 a,b = eval(input( Input two number: ) if ab: a,b=b,a print(a,b),双分支结构,if 条件表达式: 语句块1 else: 语句块2,条件表达式,语句块1,语句块2,True,F

9、alse,双分支结构, chTest = 1, 2, 3, 4, 5 if chTest: print(chTest) else: print(Empty) 1, 2, 3, 4, 5,双分支结构,Python还支持如下形式的表达式: value1 if condition else value2 当条件表达式condition的值与True等价时,表达式的值为value1,否则表达式的值为value2。 在value1和value2中还可以使用复杂表达式,包括函数调用和基本输出语句。 这个结构的表达式也具有惰性求值的特点,即value1 或 value2 只会计算其一。 a = 5 prin

10、t(6) if a3 else print(5) 6 print(6 if a3 else 5) 6 b = 6 if a13 else 9 # b = ( 6 if a13 else 9 ) b 9,双分支结构惰性求值,#此时还没有导入math模块 x = math.sqrt(9) if 53 else random.randint(1, 100) # 出错 Traceback (most recent call last): File “, line 1, in x = math.sqrt(9) if 53 else random.randint(1,100) NameError: nam

11、e math is not defined import math #此时还没有导入random模块,但由于条件表达式53的值为True,所以可以正常运行 x = math.sqrt(9) if 53 else random.randint(1,100) # 正常 #此时还没有导入random模块, #由于条件表达式23的值为False,需要计算第二个表达式的值,因此出错 x = math.sqrt(9) if 23 else random.randint(1, 100) # 出错 Traceback (most recent call last): File “, line 1, in x

12、= math.sqrt(9) if 23 else random.randint(1,100) NameError: name random is not defined import random x = math.sqrt(9) if 23 else random.randint(1, 100),选择结构的嵌套,if 表达式1: 语句块1 if 表达式2: 语句块2 else: 语句块3 else: if 表达式4: 语句块4 注意:缩进必须要正确并且一致。,35,按得分(score)输出适当信息,评分规则,36,score=90,Excellent,yes,no,评分标准,input s

13、core,嵌套时注意正确的缩进,多分支结构,if 表达式1: 语句块1 elif 表达式2: 语句块2 elif 表达式n: 语句块n else: 语句块n+1,多分支,多分支,多分支,查表法,为什么要两个A?,查表法,查表法,def func(score): degree = “DCBAAF“ #亦可写成 degree = D,C,B,A,A, F if score 100 or score = 0: grade = degreeindex else: grade = degree-1 return grade,为什么要两个A?,练习:计算函数y的值,y =,x x 0,x2 0 0 = 1

14、0,10 10 x = 20,0.5x+20 20 x = 40,选择结构应用,例1:面试资格确认。 age=24 subject=“计算机“ college=“非重点“ if (age 25 and subject=“电子信息工程“) or (college=“重点“ and subject=“电子信息工程“ ) or (age=28 and subject=“计算机“): print(“恭喜,你已获得我公司的面试机会!“) else: print(“抱歉,你未达到面试要求“),选择结构应用,例2:用户输入若干个分数,求所有分数的平均分。每输入一个分数后询问是否继续输入下一个分数,回答“ye

15、s”就继续输入下一个分数,回答“no”就停止输入分数。,选择结构应用,endFlag = yes s = 0 while endFlag.lower() = yes: x = input(“请输入一个正整数: “) x = eval(x) if isinstance(x, int) and 0=x=100: # 使用了惰性求值 s = s + x else: print(不是数字或不符合要求) endFlag = input(继续输入(yes or no)?) print(整数之和=, s),选择结构应用,例3:编写程序,判断今天是今年的第几天。 import time date = time.localtime() year = date0 month = date1 day = date2 day_month = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 if year%400=0 or (year%4=0 and year%100!=0): #判断是否为闰年 day_month1 = 29 if month=1: print(day) else: print(sum(day_month:month-1)+day),循环结构,for循环与while循环,两种基本的循环结构语句 wh

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号