(共41张PPT)
4.3运用选择结构描述问题求解过程
学习目标
掌握单分支if语句、多分支if语句的用法
掌握if语句的嵌套、if…elif…else语句的一般格式及用法
掌握程序的选择结构设计的基本流程
能够运用选择结构描述问题的求解过程
4.3 运用选择结构描述问题求解过程
1.请启动Jupyter Notebook
2.新建一个python 3 文件
4.3.1 if语句的应用——P76-79
1.单分支if语句
单分支if语句的格式:
if (条件表达式):
语句A
冒号
缩进:一个制表符
4.3.1 if语句的应用——P76-79
2.多分支if语句
多分支if语句的格式:
if (条件表达式):
语句A
else:
语句B
冒号
缩进:一个制表符
4.3.1 if语句的应用——P76-79
【例题讲解】《数据与计算》P79,判断三个数的大小,完善其流程图
print("请输入三种笔记本的优惠金额数(元):")
a,b,c = input().split()
a = float(a)
b = float(b)
c = float(c)
if a > b:
m = a
else:
m = b
if c > m:
m = c
print("优惠金额数最大的为:", m, "元")
input().split() 输入的字符串以“空格”为分隔符,切片
比如:12 34 56 123 45 126
float(c)把变量c转换成浮点型
比较a,b的值,并将较大的数赋值给m
4.3.1 if语句的应用——P76-79
【例题讲解】《数据与计算》P79,判断三个数的大小,完善其流程图
print("请输入三种笔记本的优惠金额数(元):")
a,b,c = input().split()
a = float(a)
b = float(b)
c = float(c)
if a > b:
m = a
else:
m = b
if c > m:
m = c
print("优惠金额数最大的为:", m, "元")
a b c m
32.5 63.4 78
4.3.1 if语句的应用——P76-79
【例题讲解】《数据与计算》P79,判断三个数的大小,完善其流程图
print("请输入三种笔记本的优惠金额数(元):")
a,b,c = input().split()
a = float(a)
b = float(b)
c = float(c)
if a > b:
m = a
else:
m = b
if c > m:
m = c
print("优惠金额数最大的为:", m, "元")
4.3.1 if语句的应用——P76-79
爸爸妈妈会根据小智期末考试的成绩高低来决定给他过年的压岁钱,代码如下,grade表示成绩,如果小智成绩为90,请问他能得到什么奖励:
if grade>90:
print("100元压岁钱,外加玩具")
else:
print("什么奖励都没有")
A、100元压岁钱 B、玩具
C、100元压岁钱,外加玩具 D、什么奖励都没有
【课堂练习】
D
4.3.1 if语句的应用——P76-79
关于下列伪代码(虚拟代码)说法正确的是:
输入a的值
if a>=18:
执行代码块A
else:
执行代码块B
A、当输入a的值为3时,先执行代码A,再执行代码块B
B、当输入a的值为3时,只执行代码块B
C、当输入a的值为3时,只执行代码块A
D、当输入a的值为3时,先执行代码B,再执行代码块A
【课堂练习】
B
4.3.1 if语句的应用——P76-79
请仔细阅读下列代码,推测出运行结果(输入a的值24,b的值5):
a=int(input())
b=int(input())
if a>=b:
print(a%b)
else:
print(b%a)
A、0 B、4
C、5 D、1
【课堂练习】
B
4.3.1 if语句的应用——P76-79
小慧想设计一个程序实现外部输入一个数程序判断它是否是偶数,下面的程序少了条件判断,请你为其选上正确的选项,并实现程序功能:
n=int(input())
if _______:
print(n,"是偶数")
A、n%2=0 B、n%2==0
C、n%2==1 D、n%2=1
【课堂练习】
B
4.3.1 if语句的应用——P76-79
在数学课堂上,小丁正尝试判断一个数是否既是2的倍数又是3的倍数,如果是2的倍数又是3的倍数则打印出"YES",否则打印出"NO",并写出了下列程序,由于操作失误误删了一行代码,请你为他选出正确的选项:
num=int(input())
if _______________:
print("YES")
else:
print("NO")
A、num%2 = 0 or num%3 =0 B、num%2 == 0 or num%3 ==0
C、num%2 == 0 and num%3 ==0 D、num%2 = 0 and num%3 =0
【课堂练习】
C
4.3.1 if语句的应用——P76-79
【项目演示】北京开车单双号限行,请设计程序,判断车牌号是否是双号:
1.用户输入车牌号的最后一位;
2.如果这个数是偶数,则输出“您的车牌号是双号,今天可以通行”;
3.如果这个数不是偶数,则输出“您的车牌号是单号,请明天开车”;
思考提示:
1.用数学语言表示题目的要求;
2.用“画程”软件,绘制流程图;
3.根据if语句的格式,在” Jupyter Notebook”编写代码。
4.3.1 if语句的应用——P76-79
思考提示:
1.用数学语言表示题目的要求;
x%2==0 y=“您的车牌号是双号,今天可以通行”
X%2!=0 y=“您的车牌号是单号,请明天开车”
【项目演示】北京开车单双号限行,请设计程序,判断车牌号是否是双号:
1.用户输入车牌号的最后一位;
2.如果这个数是偶数,则输出“您的车牌号是双号,今天可以通行”;
3.如果这个数不是偶数,则输出“您的车牌号是单号,请明天开车”;
4.3.1 if语句的应用——P76-79
思考提示:
1.用数学语言表示题目的要求;
2.用“画程”软件,绘制流程图;
x%2==0 y=“您的车牌号是双号,今天可以通行”
X%2!=0 y=“您的车牌号是单号,请明天开车”
【项目演示】北京开车单双号限行,请设计程序,判断车牌号是否是双号:
1.用户输入车牌号的最后一位;
2.如果这个数是偶数,则输出“您的车牌号是双号,今天可以通行”;
3.如果这个数不是偶数,则输出“您的车牌号是单号,请明天开车”;
4.3.1 if语句的应用——P76-79
思考提示:
3.根据if语句的格式,在” Jupyter Notebook”编写代码。
x=int(input(‘请输入您的车牌号最后一位数x:'))
if x%2==0:
print('您的车牌号%d是双号,今天可以通行’,%x)
else:
print('您的车牌号%d是单号,请明天开车’,%x)
【项目演示】北京开车单双号限行,请设计程序,判断车牌号是否是双号:
1.用户输入车牌号的最后一位;
2.如果这个数是偶数,则输出“您的车牌号是双号,今天可以通行”;
3.如果这个数不是偶数,则输出“您的车牌号是单号,请明天开车”;
4.3.1 if语句的应用——P76-79
【项目练习】A作业本的单价为5元/本,请设计批发销售A作业本的程序,满足以下要求:1.购买数量少于10本时,输出提示信息“批发数量太少,不销售”;
2.购买数量在10本以上(含10本),给予八五折优惠。
思考提示:
1.用数学语言表示题目的要求;
2.用“画程”软件,绘制流程图;
3.根据if语句的格式,在” Jupyter Notebook”编写代码。
4.3.1 if语句的应用——P76-79
x<10 y=“批发数量太少,不销售”
x>=10 y=5*x*0.85
【项目练习】A作业本的单价为5元/本,请设计批发销售A作业本的程序,满足以下要求:1.购买数量少于10本时,输出提示信息“批发数量太少,不销售”;
2.购买数量在10本以上(含10本),给予八五折优惠。
思考提示:
1.用数学语言表示题目的要求;
思考提示:
1.用数学语言表示题目的要求;
2.用“画程”软件,绘制流程图;
4.3.1 if语句的应用——P76-79
【项目练习】A作业本的单价为5元/本,请设计批发销售A作业本的程序,满足以下要求:1.购买数量少于10本时,输出提示信息“批发数量太少,不销售”;
2.购买数量在10本以上(含10本),给予八五折优惠。
x<10 y=“批发数量太少,不销售”
x>=10 y=5*x*0.85
4.3.1 if语句的应用——P76-79
【项目练习】A作业本的单价为5元/本,请设计批发销售A作业本的程序,满足以下要求:1.购买数量少于10本时,输出提示信息“批发数量太少,不销售”;
2.购买数量在10本以上(含10本),给予八五折优惠。
x=int(input('请输入您购买的数量x:'))
if x>=10:
y=5*x*0.85
print('您需要支付金额是:',y)
else:
print('批发数量太少,不销售')
思考提示:
3.根据if语句的格式,在” Jupyter Notebook”编写代码。
4.3.1 if语句的应用——P76-79
【拓展练习】请设计补充完善“查询垃圾分类” 的程序:
1.可回收物:废纸、塑料、玻璃、金属和布料五大类
2.有毒垃圾:电池、荧光灯管、灯泡、水银温度计、油漆桶、部分家电、过期药品及其容器、过期化妆品…
3.厨余垃圾:剩菜剩饭、骨头、菜根、菜叶、果皮…
4.其他垃圾:砖瓦陶瓷、渣土、纸巾、尘土、食品袋(盒)…
kh= ["废纸","塑料","玻璃","金属","布料"]
yd = ["废电池","废荧光灯管","废灯泡","水银温度计","废油漆桶","废家电","过期药品及容器","过期化妆品"]
cy= ["剩菜剩饭","骨头","菜根","菜叶","果皮"]
qt= ["陶瓷","砖块","渣土","纸巾","尘土","食品袋(盒)"]
if a in qt:
print(a,'是其他垃级')
else:
print('很抱歉,系统未查到您想查询的垃圾类别,请再次修改并确认垃圾名。谢谢!')
4.3.1 if语句的应用——P76-79
【拓展练习】请设计补充完善“查询垃圾分类” 的程序:
kh= ["废纸","塑料","玻璃","金属","布料"]
yd = ["废电池","废荧光灯管","废灯泡","水银温度计","废油漆桶","废家电","过期药品及容器","过期化妆品"]
cy= ["剩菜剩饭","骨头","菜根","菜叶","果皮"]
qt= ["陶瓷","砖块","渣土","纸巾","尘土","食品袋(盒)"]
a=input('请输入您想查询的垃圾名:')
if a in cy:
print(a,'是厨余垃级')
if a in yd:
print(a,'是有毒垃级')
if a in kh:
print(a,'是可回收物')
if a in qt:
print(a,'是其他垃级')
else:
print('很抱歉,系统未查到您想查询的垃圾类别,请再次修改并确认垃圾名。谢谢!')
4.3.1 if语句的应用——P76-79
【拓展练习】根据老师讲解,结合《数据与计算》P79“判断最大值”,补充完善程序,满足以下要求:
1.依次输入三个整数;
2.找出a,b,c三个数中的最小值;
3.输出最小值。
a = int(input('请输入第一个整数a:'))
b = int(input('请输入第二个整数b:'))
c = int(input('请输入第三个整数c:'))
if :
m = a
else:
m = b
if :
m = c
print("输入的三个数中,最小值是:", m)
4.3.1 if语句的应用——P76-79
【拓展练习】请设计一款“猜数字游戏”的程序,需满足以下要求:
1.计算机生成一个1~20的随机数x
2.电脑界面提示并接收:请输入您猜的数字
3.判断用户猜的数字和电脑生成的随机数的关系,并输出显示以下提示:
(1)哈哈,您猜的数字太大了!
(2)哎呀,您猜的数字太小了!
(3)恭喜您,猜对了!我们真有默契!
【提示,计算机生成随机数的代码】
import random
x=random.randint(1,20)
4.3.2 if…elif…else语句的应用(P80-85)
3. if...elif…else语句的格式
if (条件表达式1):
语句1
elif (条件表达式2):
语句2
……
elif (条件表达式n):
语句n
else:
语句n+1
可有多个
elif=else if
4.3.2 if…elif…else语句的应用(P80-85)
【例题讲解】《数据与计算》P83判断某年是否是闰年,绘制对应的流程图。
x = int(input("请输入年份:"))
if x%100==0:
if x%400==0:
print("%d年是闰年" % x)
else:
print("%d年不是闰年" % x)
elif x%4==0:
print("%d年是闰年" % x)
else:
print("%d年不是闰年" % x)
x能否被100整除
x能否被400整除
%d占位符,整数
x能否被4整除
4.3.2 if…elif…else语句的应用(P80-85)
【例题讲解】《数据与计算》P83判断某年是否是闰年 ,绘制对应的流程图
x = int(input("请输入年份:"))
if x%100==0:
if x%400==0:
print("%d年是闰年" % x)
else:
print("%d年不是闰年" % x)
elif x%4==0:
print("%d年是闰年" % x)
else:
print("%d年不是闰年" % x)
x = int(input("请输入年份:"))
if x%400==0 or (x%100>0 and x%4==0):
print("%d年是闰年" % x)
else:
print("%d年不是闰年" % x)
是闰年的两种情况:
x%400
x%100>0 and x%4==0
4.3.2 if…elif…else语句的应用(P80-85)
【例题讲解】《数据与计算》P83判断某年是否是闰年,绘制对应的流程图
x = int(input("请输入年份:"))
year = x
if x%100==0:
if x%400==0:
x=x/100
if x%4>0:
print("%d年不是闰年" % year)
else:
print("%d年是闰年" % year)
是闰年的两种情况:
x%100==0 and x/100%4==0
x%100>0 and x%4==0
4.3.2 if…elif…else语句的应用(P80-85)
【例题讲解】《数据与计算》P83判断某年是否是闰年,绘制对应的流程图
x = int(input("请输入年份:"))
year = x
if x%100==0:
if x%400==0:
x=x/100
if x%4>0:
print("%d年不是闰年" % year)
else:
print("%d年是闰年" % year)
4.3.2 if…elif…else语句的应用(P80-85)
【项目练习】根据老师的讲解,结合《数据与计算》P89程序1,请利用“画程”软件,绘制程序1的流程图。
x = int(input("请输入年份:"))
if x%100==0:
if x%400==0:
print("%d年是闰年" % x)
else:
print("%d年不是闰年" % x)
elif x%4==0:
print("%d年是闰年" % x)
else:
print("%d年不是闰年" % x)
4.3.1 if语句的应用——P76-79
周末爸爸妈妈带着小智和小智的弟弟去动物园游玩,门票的价格和游客的年龄有关系(关系如下展示),已知爸爸32岁,妈妈31岁,小智9岁,弟弟3岁,请问小智他们买门票花了多少钱(门票价格price表示,年龄age表示):
if age>=18:
price=50
elif age>=8 and age<18:
price=25
else:
price=0
A、150元 B、125元 C、100元
【课堂练习】
B
年龄 32 31 9 3
门票钱
4.3.2 if…elif…else语句的应用(P80-85)
【习题讲解】课堂练习《活动手册》P94-95,单选10——五分钟思考
10.请判断如下程序的运行结果是将三个数( )。
print("请输入3个数:")
x=int(input("x="))
y=int(input("y=")
r=int(input("z=")
temp=0
if x>y:
temp=y
y=x
x=temp
if y>z:
temp=z
z=x
x=temp
if y >z
temp=z
z=y
y=temp
print("这3个数新序列是:",x,y,x)
A.从小到大排序 B.从大到小排序 C.都变成最大的数 D.都变成最小的数
A
4.3.2 if…elif…else语句的应用(P80-85)
【习题讲解】课堂练习《活动手册》P94-95,单选10
x>y temp=y x,y的新序列 y=x x y
a=temp
x>z temp=z x,z的新序列 z=x x z
x=temp
y>z temp=z y,z的新序列 z=y y z
y=temp
x=25 y=15 x y temp
x= z=10 x z temp
y= z= y z temp
4.3.2 if…elif…else语句的应用(P80-85)
【习题讲解】课堂练习《活动手册》P94-95,单选10
x>y temp=y x,y的新序列
y=x
a=temp x>z temp=z x,z的新序列
z=x
x=temp y>z temp=z y,z的新序列
z=y
y=temp
x,y,z的新序列:
4.3.2 if…elif…else语句的应用(P80-85)
【拓展练习】根据老师的讲解,结合《活动手册》P94单选10,请修改程序,从大到小依次输出数字,并满足以下要求:
1.用户以此输入三个整数a,b,c;
2.判断三个整数的大小关系;
3.按从大到小的顺序依次输出三个数字;
4.3.2 if…elif…else语句的应用(P80-85)
【拓展练习】结合《活动手册》P97情景题(2)选手得分问题,请设计程序,计算选手的最终得分,满足以下要求:
1.分行输入6位评委的评分(0-100的整数);
2.通过判断,去掉最高分和最低分;
3.输出评委的平均分
x=int(input('请输入评委的人数:'))
print('请输入各位评委的评分(0-100 的整数):')
num=[] # 生成一个空列表
i=0
while i < x: # 将每位评委的评分存入列表
n=int(input('请输入%d位评委的评分:'%(i+1)))
num.append(n)
i=i+1
i=0
while i < x: # 自己检验是否将评分存入列表
print(num[i])
i=i+1
a=min(num)# 返回最小值 # 找出列表的最大值和最小值
b=max(num)# 返回最大值
sum=0
i=0
while i < x: # 求和
sum=sum+num[i]
i=i+1
y=(sum-a-b)/(x-2)
print('各位选手的平均分是:',y)
4.3.2 if…elif…else语句的应用(P80-85)
思考提示:
1.用数学语言表示题目的要求;
2.用“画程”软件,表示数学表达式;
3.根据if…elif…else语句的格式,在” Jupyter Notebook”编写代码。
【项目演示】请设计程序,从小到大依次输出数字,并满足以下要求:
1.用户以此输入三个整数a,b,c;
2.判断三个整数的大小关系;
3.按从小到大的顺序依次输出三个数字;
4.3.2 if…elif…else语句的应用(P80-85)
思考提示:
1.用数学语言表示题目的要求;
【项目演示】请设计程序,从小到大依次输出数字,并满足以下要求:
1.用户以此输入三个整数a,b,c;
2.判断三个整数的大小关系;
3.按从小到大的顺序依次输出三个数字;
a
cabcb【项目演示】请设计程序,从小到大依次输出数字,并满足以下要求:
1.用户以此输入三个整数a,b,c;
2.判断三个整数的大小关系;
3.按从小到大的顺序依次输出三个数字;
4.3.2 if…elif…else语句的应用(P80-85)
思考提示:
1.用数学语言表示题目的要求;
2.用“画程”软件,表示数学表达式;
acabcb4.3.2 if…elif…else语句的应用(P80-85)
【项目演示】请设计程序,从小到大依次输出数字,并满足以下要求:
1.用户以此输入三个整数a,b,c;
2.判断三个整数的大小关系;
3.按从小到大的顺序依次输出三个数字;
a = int(input("请输入整数a:"))
b = int(input("请输入整数b:"))
c = int(input("请输入整数c:"))
if aif cif cprint(c,a,b)
else:
print(a,c,b)
else:
print(a,b,c)
elif cif cprint(c,b,a)
else:
print(b,c,a)
else:
print(b,a,c)