(共20张PPT)
4.3运用选择结构描述问题求解过程
《数据与计算》必修一
目 录
4.3.1 if语句的应用
4.3.2 if..elif..else语句的应用
在程序设计中,主要使用条件语句(if语句)来实现判断和选择。if语句在使用中包括单分支if语句和双分支if语句。
1.单分支if语句
(1)格式:
if (条件表达式):
语句A
(2)使用单分支if语句的注意事项:
①if(条件表达式)后面加冒号“:”;
②当语句A是由多个语句构成的复合语句时,所有语句严格遵循
相同的缩进。
(3)单分支if语句的执行过程
根据其流程图:如果条件表达式为真,则执行语句A,然后继续往下执行;如果条件表达式为假,则不执行语句A,然后继续往下执行。
单分支if语句执行过程
思考:如下问题如何通过计算机程序来解决?
项目小组成员在某购物网站上了解到某种笔记本搞优惠活动,规定一次购买6本以上(含6本)10本以下(含10本)打9折,一次购买11本以上(包含11本)打8折。怎样根据笔记本的单价和购买数量编写程序计算总费用?
任务一:分析问题
设项目小组购买笔记本的数量为s本,笔记本的单价为p元,折扣系数为j,总费用为t。根据题意,有:
如果s<6,则j=1.0;
如果s≥6而且s≤10,则j=0.9;
如果s≥11,则j=0.8;
又t=s×p×j,求出t的值即为所求的总费用。
任务二:设计算法
根据上面对问题的分析,解决问题的算法描述如下:
①输入s,p的值;
②如果s<6,则j=1.0;
③如果s≥6而且s≤10,则j=0.9;
④如果s≥11,则j=0.8;
⑤t=s×p×j;
⑥输出t的值;
⑦结束。
要求:以小组为单位,根据分析,设计算法.
网购笔记本的金额计算流程图
input()函数
If语句
print()函数
根据设计的算法,写出解决问题的程序
s=int(input("请输入购买的笔记本的数量(多少本):"))
p=float(input("请输入笔记本的单价(每本多少元):"))
if s<6:
j=1.0
if s>=6 and s<=10:
j=0.9
if s>=11:
j=0.8
t=s*p*j
print("总费用为:","%.1f"%t,"元")
任务三:编写程序
强制类型转换
if条件判断
任务四:调试运行程序
float( ) 将变量转换成浮点型
表示输出带有1位小数的数
2.双分支if语句
双分支if语句的流程图表示
(1)格式:
if (条件表达式):
语句A
Else:
语句B
(2)注意事项:
①if(条件表达式)后面加冒号“:”;
②当语句A和语句B是由多个语句构成的复合语句时,所有语句严格遵循相同的缩进。
思考:求最值的方法有哪些,该如何编程实现?
项目小组成员在某购物网站上看到三种笔记本的优惠价各不相同,笔记本1、笔记本2和笔记本3每本分别优惠价为a元、b元和c元,编程输出其优惠价的最大值。
任务一:分析问题
对于读入的三个数a、b、c,设其中的最大数为m,先找出a和b中最大的数赋给m,然后再将m与c比较,从而找了三个数中最大的数。
任务二:设计算法
解决问题的算法描述如下:
①输入三个数a,b,c;
②如果a>b,则m=a;否则m=b;
③如果c>m,则m=c;
④输出m的值;
⑤结束。
根据设计的算法,写出解决问题的程序
任务三:编写程序
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,"元")
函数分割,字符串类型
转换成浮点型
任务四:调试运行程序
.split() 对象是一个 “字符串”#split()括号内可以没有参数,代表按照空,空格,换行符,制表符来分割。
运行时,用空格隔开。
3.if语句的嵌套
If 语句允许嵌套,即if语句中的语句A和语句B还可以是if语句。
案例三:
一元二次方程求解:有一方程ax2+bx+c=0,a,b,c的值由键盘输入,请编程序,打印出以下情况时方程的解。
(1)a=0,b≠0时,解为-c/b;
(2)a=0,b=0,c=0,解为任意值;
(3)a=0,b=0,c≠0,无解;
(4)a≠0,b2-4ac≥0,有两个实根;
3.if语句的嵌套
求解:ax2+bx+c=0的一元二次方程的解。
其中a,b,c的值由键盘输入
一、假设a=0
(1)当b≠0时,方程的解为:-c/b;
(2)当b=0时
①假设c≠0,无解;
②假设c=0,解为任意值;
二、假设a≠0
当b2-4ac≥0,有两个实根,x1=(b+d**0.5)/(2*a);x2=(-b-d**0.5)/(2*a);
任务一:算法分析
3.if语句的嵌套
Y
N
Y
Y
N
N
Y
任务二:算法设计
a,b,c=input().split()
a=float(a)
b=float(b)
c=float(c)
if(a==0):
if (b!=0):
print("只有一个解",-b/c)
else:
if(c!=0):
print("无解")
else:
print("解为任意值")
else:
d=b*b-4*a*c
if(d>=0):
x1=(-b+d**0.5)/(2*a)
x2=(-b-d**0.5)/(2*a)
print("x1=","%.2f"%x1)
print("x2=","%.2f"%x2)
任务三:编写程序
任务四:调试运行程序
a=0,b=2,c=1
a=0,b=0,c=1
a=0,b=0,c=0
a=2,b=6,c=2.3