内容正文:
第3章 分支结构
第3章 分支结构
逻辑判断
单分支结构
双分支结构
多分支结构
分支结构的嵌套
实际问题中,很多时候需要根据给定的条件来决定做什么:条件满足时做什么,条件不满足时做什么。
如果外面正在下雨,那么出门的时候需要带雨伞。
根据体质指数,判断身体状态(偏瘦、正常、偏胖等)。
这些问题的特点是需要对给定的条件进行分析、比较和判断,并根据判断结果采取不同的操作。
顺序结构程序是无法解决类似的问题。计算科学中用来描述这种选择现象的重要手段是分支结构,也称选择结构。
3.1.1 关系运算符
3.1 逻辑判断
相等 ==
不等 !=
大于 >
小于 <
大于等于 >=
小于等于 <=
比较的结果是bool类型:True或False
True 和1完全等价, False和0完全等价
相当于False: "" [] None
相当于True: 非0的数,非空的字符串,非空列表
True == 1 #True
False == 0 #True
"" == False #False
2 == True #False
5
5
print(3 < 5) #>>True
print(2 < 4 < 6 < 8) #>>True 关系运算符允许连续使用
print(2 < 4 > 5) #>>False
b =4 < 6
print(b) #>>True
print( b == 2) #>>False
6
用关系运算符将两个式子连接起来的式子称为关系表达式。
6
关系运算符也能比较字符串(按字典序,大小写相关)
print(’A’>’a’) #>>False
a = "abc"
print(a == "abc") #>>True
print(a == "Abc") #>>False
7
7
3.1.2 逻辑运算
1.逻辑运算符
not x:
x值为True(或相当于True)时, 结果为False(或相当于False)
x值为False(或相当于False)时, 结果为True(或相当于True)
not 4 < 5 #False
not 5 #False
not 0 #True
优先级由高到低:not、and、or
100>50 and 100<200 #>>True
100<50 and 300<200 #>>False 短路计算
100>50 or 100<200 #>>True 短路计算
100<50 or 300<200 #>>False
not 100<200 #>>False
not False #>>True
not True #>>False
6 and 9 #>>9
0 and 9 #>>0
6 or 9 #>>6
0 or 9 #>>9
写出下列条件
(1)判断年份year是否为闰年。
(year%4==0 and year%100!=0) or year%400==0
(2)判断ch是否为小写字母。
'a' <= ch <='z'
(3)判断m能否被n整除。
m%n==0
简单的分支情况,Python语言提供了条件运算符:
表达式1 if 表达式 else 表达式2
3.1.3 条件运符
例3.1 输入两个整数,输出最大值。
a=int(input("请输入a的值:"))
b=int(input("请输入b的值:"))
max= a if a>b else b
print(max)
关于Python二分支精简结构的表示,正确的选项是()。
A、条件 if 表达式1 else表达式2
B、表达式1 if表达式2 else条件
C、表达式1 if条件else表达式2
D、表达式1 if条件:表达式2 else
执行以下程序,输入60,输出的结果是()。
s = eval(input())
k ='合格' if s >= 60 else '不合格’
print(s, k)
A、合格
B、不合格
C、60
D、60 合格
3.1.4 身份运算符
测试两个变量是否指向同一个对象(占用的内存地址),
一样返回True,否则返回False。
>>> a=[1,2,3,4]
>>> b=[1,2,3,4]
>>> id(a)
1768334769992
>>> id(b)
1768333183944
>>> a is b
False
>>> a==b
True
3.2.1 单分支结构语法(如果...则...)
if 表达式:
语句块
3.2 单分支结构
注意:
(1)表达式后面必须加冒号。
(2)可以是任意表达式。
(3)句块必须向右缩进,语句块可以是单个语句,也可以是多个语句。当包含多条语句时,多条语句的缩进必须一致即语句块中的语句必须上下对齐。
当输入为95、65时,以下2段代码的结果如何?
score=int(input("score="))
if score>=90:
print("Congratuations!")
print("Your score is %d" % score)
score=int(input("score="))
if score>=90:
print("Congratuations!")
print("Your score is %d" % score)
输入95时,程序显示结果:
Congratuations!
Your score is 95
输入65时,程序显示结果:
Your score is 65
输入95时,程序显示结果:
Congratuations!
Your score is 95
输入65时,没有显示结果
例3-2 输入一个非零整数,如果其大于零,则输出“正数”;如果小于零,则输出“负数”。
程序如下:
x=int(input("请输入一个非零整数:"))
if x>0:
print("正数")
if x<0:
print("负数")
键盘输入数字5,以下代码的输出结果是()。
n =eval(input("请输入一个整数:"))
s =0
if n>=5:
n -= 1
s =4
if n<5:
n -= 1
s =3
print(s)
答案:3
3.2.2 双分支结构
if 表达式:
语句块1
else:
语句块2
例3-2 输入一个非零整数,如果其大于零,则输出“正数”;如果小于零,则输出“负数”。用if ...else....改写
程序如下:
x=int(input("请输入一个非零整数:"))
if x>0:
print("正数")
if x<0:
print("负数")
else:
例3.4 输入年份x,判断是否是闰年。
分析:年份只要满足下列两个条件之一,就是闰年:
(1)年份是4的倍数,且不是100的倍数。
(2)年份是400的倍数。
如1900年、2022年不是闰年,而2000年、2024年是闰年。
x=int(input("请输入年份:"))
if (x%100!=0 and x%4==0) or (x%400==0):
print("%d年是闰年"%x)
else:
print("%d年不是闰年"%x)
例3.5 输入一个整数,判断这个整数是奇数还是偶数。
分析:能被2整除的数是偶数,不能被2整除的数是奇数。
x=int(input("请输入1个整数:"))
if x%2==0:
print("%d是偶数" % x)
else:
print("%d是奇数" % x)
a ="123"
if a > "Python":
print("再学Python")
else:
print("初学Python")
A、初学Python
B、再学Python
C、没有输出
D、执行出错
if 表达式1:
语句块1
elif 表达式2:
语句块2
elif 表达式3:
语句块3
……
elif 表达式m:
语句块m
3.4 多分支结构
if...elif... else是多分支选择结构,从中选择第一个满足条件的情况操作,即多选一。
例3.6 输入一个整数,判断是正数、负数或是0。
x=int(input("请输入一个整数:"))
if x>0:
print("x是正数")
elif x<0:
print("x是负数")
else:
print("x是0")
例3.7 根据体质指数,判断身体状态(偏瘦、正常、偏胖)。
按照中国人的体质特征,BMI 指数小于18.5为偏瘦,在 18.5 到 23.9 之间为正常,超过在 23.9 为偏胖。
weight=eval(input('请输入以kg为单位的体重值:'))
height= eval(input('请输入以m为单位的身高值:'))
bmi=weight/pow(height,2)
print("你的BMI数值为:{:.2f}".format(bmi),end=",")
if bmi < 18.5:
print("属于偏瘦")
elif 18.5<=bmi<=23.9:
print("属于正常")
else:
print("属于偏胖")
运行结果:
请输入以kg为单位的体重值:70
请输入以m为单位的身高值:1.80
你的BMI数值为:21.60,属于正常
以下代码的执行结果是()。
a= 75
if a > 60:
print("Should Work Hard!")
elif a > 70:
print("Good")
else:
print("Excellent")
A、执行出错
B、Excellent
C、Good
D、Should Work Hard!
3.5 分支结构的嵌套
if语句中可以再嵌套if语句。一定要注意不同级别代码块的缩进量,因为缩进量决定了代码的从属关系。
if 条件 1:
if 条件2:
语句块2 #当条件1、2同时为真时,执行语句块2
else:
语句块3 #当条件1为真,条件2为假时,执行语句块3
else:
语句块4 #当条件1为假时,执行语句块4
考虑一下执行流程:
mark = eval(input("请输入成绩:"))
if 0 <= mark <=100:
if mark < 60:
print("不及格")
else:
print("及格")
else:
print("输入的成绩格式错误!")
例3.9 输入3个整数,输出最大值。算法不唯一,此处用嵌套
a=int(input("请输入a的值:"))
b=int(input("请输入b的值:"))
c=int(input("请输入c的值:"))
if a>b:
if a>c:
max=a
else:
max=c
elif b>c:
max=b
else:
max=c
print("最大值为:%d" % max)
1.输入一个整数,判断它是否为水仙花数。所谓水仙花数,是指这样的一些三位整数:各位数字的立方和等于该数本身,例如153=13+53+33,因此153是水仙花数。
2. 输入年月,求该月的天数。
分支结构练习
$$