选择与循环
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 观察example3_1.py和 question3_1.py程序运行结果的 异同。
• 并请思考:对于单分支结构的 程序,如何设计测试数据以验 证程序流程上没有错误。
3.1.2 双分支if/else语句
• 双分支if/else语句的语法形式如下所示:
if 条件表达式: 语句体1
else: 语句体2
#example3_1.py #coding=gbk import math r=input("请输入圆的半径:") r=eval(r)
if r>=0: d=2*math.pi*r s=math.pi*r**2 print('圆的周长=',d,'圆的面积=',s)
• 程序测试:运行程序 example3_1.py,请首先输入一个 大于等于0的半径,如5,观察程序 的运行结果。再次运行程序,请输 入一个小于0的半径,如-1,观察 程序的运行结果。
if t%400==0 or (t%4==0 and t%100!=0):
print(t,'年是闰年') else:
print(t,'年不是闰年')
• 例3-3:某金融企业为招聘职工,满足以下两个条件之一的求职者将会接到面试通知。
(1)25岁及以下且是重点大学“金融工程”专业的应届学生; (2)具备至少3年工作经验的“投资银行”专业人士。
if (age<=25 and college=="重点" and major=="金融工程" and jobtime==0) \ or (major=="投资银行" and jobtime>=3): print("欢迎您来参加面试!")
else: print("抱歉,不符合我们的面试条件。")
• 程序运行结果:
• 分析:键盘输入标准价格price、订货量Quantity, 依照上述标准进行判断得到折扣率。注意,还需要 考虑订货量和标准价格输入小于0时的错误情况。
#example3_4.py
if Quantity>=0 and price>=0:
#coding=gbk
Pays=Quantity * price * (1-Coff)
• 程序测试:运行程序,请首先 输入年份1996,观察程序的运 行结果。再次运行程序,请输 入年份2000,观察程序的运行 结果。再次运行程序,请输入 年份2003,观察程序的运行结 果。
• 程序代码:
#example3_2.py #coding=gbk import math t=input("请输入年份:") t=int(t)
多分支结构
对不同分数分级的问题
score = eval(input()) if score >= 60:
grade = "D"
elif score >= 70: grade = "C"
elif score >= 80: grade = "B"
elif score >= 90: grade = "A"
• 只有在输入的半径为大于等于0的 数时,会产生正确的输入和输出。 如果输入的半径小于0,则不产生 任何输出。
• 程序运行结果:
请输入圆的半径:5 圆的周长= 31.4159265359 圆的面积= 78.5398163397
• 思考3-1:如果程序编写如下, 会产生怎样的结果。
#question3_1.py #coding=gbk import math r=input("请输入圆的半径:") r=eval(r)
- 注意多条件之间的包含关系 - 注意变量取值范围的覆盖
print("输入成绩属于级别{}".format(grade))
多分支结构
对不同分数分级的问题
score = eval(input())
if score >= 90: grade = "A"
-正确,但存在冗余
elif score >= 80 and score <90: grade = "B"
3.0 条件表达式
>>> if 3:
#使用整数作为条件表达式
print(5)
5
>>> a = [1, 2, 3]
>>> if a:
#使用列表作为条件表达式
print(a)
[1, 2, 3]
>>> a = []
>>> if a:
print(a)
else:
print('empty')
empty
3.0 条件表达式
– 条件(1)的表达式为:age<=25 and college=="重点" and major=="金融工程" and jobtime==0 – 条件(2)的表达式:major=="投资银行" and jobtime>=3
• 程序代码:
#example3_3.py #coding=gbk age=24 jobtime=3 college="非重点" major="投资银行"
3.1 分支结构控制语句
• Python的分支控制语句根据条件表达式的 判断结果为真(非零、非空)还是为假 (零、空),选择运行程序的其中一个分 支。
• Python的分支结构控制语句主要有:
– 单分支语句 – 双分支语句 – 多分支语句 – 嵌套分支语句 – 分支结构的三元运算。
3.1.1 单分支if语句
3.0 条件表达式
另外,在Python中,条件表达式中不允许使用赋值运算符 “=”,避免了其他语言中误将关系运算符“==”写作赋 值运算符“=”带来的麻烦,例如下面的代码,在条件表 达式中使用赋值运算符“=”将抛出异常,提示语法错误。
>>> if a=3: SyntaxError: invalid syntax >>> if (a=3) and (b=4): SyntaxError: invalid syntax
• if语句由四部分组成:关键字if、条件表达式、 冒号、表达式结果为真(包括非零、非空) 时要执行的语句体。其语法形式如下所示:
if 条件表达式:
语句体
• 单分支if语句先判断条件表达式值的是真还是 假。
– 如果判断的结果为真(包括非零、非空),则 执行语句体中的操作;
– 如果条件表达式的值为假(包括零、空),则 不执行语句体中的操作。
if score >= 90: grade = "A"
-正确,最简洁
elif score >= 80 grade = "Bgrade = "C"
elif score >= 60 grade = "D"
print("输入成绩属于级别{}".format(grade))
55
>>> s = 0
>>> for i in range(0, 11, 1): #遍历迭代对象中的所有元素
s += i
>>> print(s)
55
3.0 条件表达式
• 逻辑运算符and和or以及关系运算符具有惰性求值特点
L
L
L
K1 K2 (1)or,并联电路
K1 K2 (2)and,串联电路
K (3)not,短路
• 请编写程序判断一个24岁非重点大学投资银行专业毕业,已有三年工作经验的求职者能否得 到面试通知。
• 分析:该企业面试条件涉及年龄、工作年限、毕业院校类别、所学专业四个方面。为此,设 定以下变量:年龄age(整型,取值应该大于0),工作时间(年)jobtime(整型,取值应 该大于等于0),毕业院校类别college(字符串类型,取值为“重点”和“非重点”),所 学专业major(字符串类型,取值为“金融工程”、“投资银行”和“其他”)。条件(1) 和条件(2)各自内部的逻辑关系都是“并且”。条件(1)和条件(2)之间的逻辑关系是 “或”。
第3章 选择与循环
主要内容
• 分支结构控制语句
– 单分支if语句 – 双分支if/else语句 – 多分支if/elif/else语
句 – 选择结构的嵌套 – 选择结构的三元运
算
• 循环结构控制语句
– while语句 – for语句 – break与continue语
句 – 带else的循环语句 – 循环的嵌套 – 循环嵌套中的break
if r>=0: d=2*math.pi*r s=math.pi*r**2
print('圆的周长=',d,'圆的面积=',s)
• 程序测试:运行程序 question3_1.py,请首先输入一 个大于等于0的半径,如5,观 察程序的运行结果。再次运行 程序,请输入一个小于0的半径, 如-1,观察程序的运行结果。
>>> i = s = 0
>>> while i <= 10:
#使用关系表达式作为条件表达式
s += i
i += 1
>>> print(s)
55
>>> i = s = 0
>>> while True:
#使用常量True作为条件表达式
s += i
i += 1
if i > 10:
break
>>> print(s)
• if/else语句是一种双分支结构,先判断条 件表达式值的真假:
– 如果条件表达式的结果为真(包括非零、 非空),则执行语句体1中的操作;
– 如果条件表达式为假(包括零、空),则 执行语句体2中的操作。
• 语句体1和语句体2既可以包含多条语句, 也可以只由一条语句组成。
• 【例3-2】从键盘输入年份t, 如果年份t能被400整除,或者 能被4整除但不能被100整除, 则输出“t年是闰年”,否则输 出“t年不是闰年”,t用输入的 年份代替。
3.0 条件表达式
比较特殊的运算符还有逻辑运算符“and”和“or”以及 关系运算符,具有短路求值或惰性求值的特点,只计算必 须计算的表达式的值。
以“and”为例,对于表达式“表达式1 and 表达式2”而 言,如果“表达式1”的值为“False”或其他等价值时, 不论“表达式2”的值是什么,整个表达式的值都是 “False”,此时“表达式2”的值无论是什么都不影响整 个表达式的值,因此将不会被计算,从而减少不必要的计 算和判断。
price=int(input('请输入标准价格: '))
欢迎您来参加面试!
3.1.3 多分支if/elif/else语句
• 多分支if/elif/else语句的语法形式如 下所示:
if 条件表达式1 : 语句体1
elif 条件表达式2 : 语句体2
…… elif 条件表达式n-1 :
语句体n-1 else:
语句体n
• 语句体1,语句体2,……,语句体 n,既可以包含多条语句,也可以 只由一条语句组成。
• 语句体既可以包含多条语句,也可以只由一 条语句组成。当语句体由多条语句组成时, 要有统一的缩进形式,否则可能会出现逻辑 错误或导致语法错误。
单分支结构
if True: print("条件正确")
• 【例3-1】从键盘输入圆的半径, 如果半径大于等于0,则计算并输 出圆的面积和周长。
• 程序代码:
• 【例3-4】从键盘输入标准价格和订货量。根据订货 量大小,价格给以不同的折扣,计算应付货款(应 付货款=订货量×价格×(1-折扣))。订货量300以 下,没有折扣;订货量300及以上,500以下,折扣 为3%;订货量500及以上,1000以下,折扣5%; 订货量1000及以上,2000以下,折扣8%;订货量 2000及以上,折扣10%。
与continue语句
3.0 条件表达式
算术运算符:+、-、*、/、//、%、** 关系运算符:>、<、==、<=、>=、!=,可以连续使用,如
>>> 1<2<3 True >>> 1<2>3 False >>> 1<3>2 True
测试运算符:in、not in、is、is not 逻辑运算符:and、or、not,注意短路求值 位运算符:~、&、|、 ^、 <<、>> 矩阵乘法运算符:@
elif score >= 70 and score <80: grade = "C"
elif score >= 60 and score<70: grade = "D"
print("输入成绩属于级别{}".format(grade))
多分支结构
对不同分数分级的问题
score = eval(input())
3.0 条件表达式
在选择和循环结构中,条件表达式的值只要不是False、0 (或0.0、0j等)、空值None、空列表、空元组、空集合、 空字典、空字符串、空range对象或其他空迭代对象, Python解释器均认为与True等价。
从这个意义上来讲,几乎所有的Python合法表达式都可以 作为条件表达式,包括含有函数调用的表达式。
• 并请思考:对于单分支结构的 程序,如何设计测试数据以验 证程序流程上没有错误。
3.1.2 双分支if/else语句
• 双分支if/else语句的语法形式如下所示:
if 条件表达式: 语句体1
else: 语句体2
#example3_1.py #coding=gbk import math r=input("请输入圆的半径:") r=eval(r)
if r>=0: d=2*math.pi*r s=math.pi*r**2 print('圆的周长=',d,'圆的面积=',s)
• 程序测试:运行程序 example3_1.py,请首先输入一个 大于等于0的半径,如5,观察程序 的运行结果。再次运行程序,请输 入一个小于0的半径,如-1,观察 程序的运行结果。
if t%400==0 or (t%4==0 and t%100!=0):
print(t,'年是闰年') else:
print(t,'年不是闰年')
• 例3-3:某金融企业为招聘职工,满足以下两个条件之一的求职者将会接到面试通知。
(1)25岁及以下且是重点大学“金融工程”专业的应届学生; (2)具备至少3年工作经验的“投资银行”专业人士。
if (age<=25 and college=="重点" and major=="金融工程" and jobtime==0) \ or (major=="投资银行" and jobtime>=3): print("欢迎您来参加面试!")
else: print("抱歉,不符合我们的面试条件。")
• 程序运行结果:
• 分析:键盘输入标准价格price、订货量Quantity, 依照上述标准进行判断得到折扣率。注意,还需要 考虑订货量和标准价格输入小于0时的错误情况。
#example3_4.py
if Quantity>=0 and price>=0:
#coding=gbk
Pays=Quantity * price * (1-Coff)
• 程序测试:运行程序,请首先 输入年份1996,观察程序的运 行结果。再次运行程序,请输 入年份2000,观察程序的运行 结果。再次运行程序,请输入 年份2003,观察程序的运行结 果。
• 程序代码:
#example3_2.py #coding=gbk import math t=input("请输入年份:") t=int(t)
多分支结构
对不同分数分级的问题
score = eval(input()) if score >= 60:
grade = "D"
elif score >= 70: grade = "C"
elif score >= 80: grade = "B"
elif score >= 90: grade = "A"
• 只有在输入的半径为大于等于0的 数时,会产生正确的输入和输出。 如果输入的半径小于0,则不产生 任何输出。
• 程序运行结果:
请输入圆的半径:5 圆的周长= 31.4159265359 圆的面积= 78.5398163397
• 思考3-1:如果程序编写如下, 会产生怎样的结果。
#question3_1.py #coding=gbk import math r=input("请输入圆的半径:") r=eval(r)
- 注意多条件之间的包含关系 - 注意变量取值范围的覆盖
print("输入成绩属于级别{}".format(grade))
多分支结构
对不同分数分级的问题
score = eval(input())
if score >= 90: grade = "A"
-正确,但存在冗余
elif score >= 80 and score <90: grade = "B"
3.0 条件表达式
>>> if 3:
#使用整数作为条件表达式
print(5)
5
>>> a = [1, 2, 3]
>>> if a:
#使用列表作为条件表达式
print(a)
[1, 2, 3]
>>> a = []
>>> if a:
print(a)
else:
print('empty')
empty
3.0 条件表达式
– 条件(1)的表达式为:age<=25 and college=="重点" and major=="金融工程" and jobtime==0 – 条件(2)的表达式:major=="投资银行" and jobtime>=3
• 程序代码:
#example3_3.py #coding=gbk age=24 jobtime=3 college="非重点" major="投资银行"
3.1 分支结构控制语句
• Python的分支控制语句根据条件表达式的 判断结果为真(非零、非空)还是为假 (零、空),选择运行程序的其中一个分 支。
• Python的分支结构控制语句主要有:
– 单分支语句 – 双分支语句 – 多分支语句 – 嵌套分支语句 – 分支结构的三元运算。
3.1.1 单分支if语句
3.0 条件表达式
另外,在Python中,条件表达式中不允许使用赋值运算符 “=”,避免了其他语言中误将关系运算符“==”写作赋 值运算符“=”带来的麻烦,例如下面的代码,在条件表 达式中使用赋值运算符“=”将抛出异常,提示语法错误。
>>> if a=3: SyntaxError: invalid syntax >>> if (a=3) and (b=4): SyntaxError: invalid syntax
• if语句由四部分组成:关键字if、条件表达式、 冒号、表达式结果为真(包括非零、非空) 时要执行的语句体。其语法形式如下所示:
if 条件表达式:
语句体
• 单分支if语句先判断条件表达式值的是真还是 假。
– 如果判断的结果为真(包括非零、非空),则 执行语句体中的操作;
– 如果条件表达式的值为假(包括零、空),则 不执行语句体中的操作。
if score >= 90: grade = "A"
-正确,最简洁
elif score >= 80 grade = "Bgrade = "C"
elif score >= 60 grade = "D"
print("输入成绩属于级别{}".format(grade))
55
>>> s = 0
>>> for i in range(0, 11, 1): #遍历迭代对象中的所有元素
s += i
>>> print(s)
55
3.0 条件表达式
• 逻辑运算符and和or以及关系运算符具有惰性求值特点
L
L
L
K1 K2 (1)or,并联电路
K1 K2 (2)and,串联电路
K (3)not,短路
• 请编写程序判断一个24岁非重点大学投资银行专业毕业,已有三年工作经验的求职者能否得 到面试通知。
• 分析:该企业面试条件涉及年龄、工作年限、毕业院校类别、所学专业四个方面。为此,设 定以下变量:年龄age(整型,取值应该大于0),工作时间(年)jobtime(整型,取值应 该大于等于0),毕业院校类别college(字符串类型,取值为“重点”和“非重点”),所 学专业major(字符串类型,取值为“金融工程”、“投资银行”和“其他”)。条件(1) 和条件(2)各自内部的逻辑关系都是“并且”。条件(1)和条件(2)之间的逻辑关系是 “或”。
第3章 选择与循环
主要内容
• 分支结构控制语句
– 单分支if语句 – 双分支if/else语句 – 多分支if/elif/else语
句 – 选择结构的嵌套 – 选择结构的三元运
算
• 循环结构控制语句
– while语句 – for语句 – break与continue语
句 – 带else的循环语句 – 循环的嵌套 – 循环嵌套中的break
if r>=0: d=2*math.pi*r s=math.pi*r**2
print('圆的周长=',d,'圆的面积=',s)
• 程序测试:运行程序 question3_1.py,请首先输入一 个大于等于0的半径,如5,观 察程序的运行结果。再次运行 程序,请输入一个小于0的半径, 如-1,观察程序的运行结果。
>>> i = s = 0
>>> while i <= 10:
#使用关系表达式作为条件表达式
s += i
i += 1
>>> print(s)
55
>>> i = s = 0
>>> while True:
#使用常量True作为条件表达式
s += i
i += 1
if i > 10:
break
>>> print(s)
• if/else语句是一种双分支结构,先判断条 件表达式值的真假:
– 如果条件表达式的结果为真(包括非零、 非空),则执行语句体1中的操作;
– 如果条件表达式为假(包括零、空),则 执行语句体2中的操作。
• 语句体1和语句体2既可以包含多条语句, 也可以只由一条语句组成。
• 【例3-2】从键盘输入年份t, 如果年份t能被400整除,或者 能被4整除但不能被100整除, 则输出“t年是闰年”,否则输 出“t年不是闰年”,t用输入的 年份代替。
3.0 条件表达式
比较特殊的运算符还有逻辑运算符“and”和“or”以及 关系运算符,具有短路求值或惰性求值的特点,只计算必 须计算的表达式的值。
以“and”为例,对于表达式“表达式1 and 表达式2”而 言,如果“表达式1”的值为“False”或其他等价值时, 不论“表达式2”的值是什么,整个表达式的值都是 “False”,此时“表达式2”的值无论是什么都不影响整 个表达式的值,因此将不会被计算,从而减少不必要的计 算和判断。
price=int(input('请输入标准价格: '))
欢迎您来参加面试!
3.1.3 多分支if/elif/else语句
• 多分支if/elif/else语句的语法形式如 下所示:
if 条件表达式1 : 语句体1
elif 条件表达式2 : 语句体2
…… elif 条件表达式n-1 :
语句体n-1 else:
语句体n
• 语句体1,语句体2,……,语句体 n,既可以包含多条语句,也可以 只由一条语句组成。
• 语句体既可以包含多条语句,也可以只由一 条语句组成。当语句体由多条语句组成时, 要有统一的缩进形式,否则可能会出现逻辑 错误或导致语法错误。
单分支结构
if True: print("条件正确")
• 【例3-1】从键盘输入圆的半径, 如果半径大于等于0,则计算并输 出圆的面积和周长。
• 程序代码:
• 【例3-4】从键盘输入标准价格和订货量。根据订货 量大小,价格给以不同的折扣,计算应付货款(应 付货款=订货量×价格×(1-折扣))。订货量300以 下,没有折扣;订货量300及以上,500以下,折扣 为3%;订货量500及以上,1000以下,折扣5%; 订货量1000及以上,2000以下,折扣8%;订货量 2000及以上,折扣10%。
与continue语句
3.0 条件表达式
算术运算符:+、-、*、/、//、%、** 关系运算符:>、<、==、<=、>=、!=,可以连续使用,如
>>> 1<2<3 True >>> 1<2>3 False >>> 1<3>2 True
测试运算符:in、not in、is、is not 逻辑运算符:and、or、not,注意短路求值 位运算符:~、&、|、 ^、 <<、>> 矩阵乘法运算符:@
elif score >= 70 and score <80: grade = "C"
elif score >= 60 and score<70: grade = "D"
print("输入成绩属于级别{}".format(grade))
多分支结构
对不同分数分级的问题
score = eval(input())
3.0 条件表达式
在选择和循环结构中,条件表达式的值只要不是False、0 (或0.0、0j等)、空值None、空列表、空元组、空集合、 空字典、空字符串、空range对象或其他空迭代对象, Python解释器均认为与True等价。
从这个意义上来讲,几乎所有的Python合法表达式都可以 作为条件表达式,包括含有函数调用的表达式。