(共16张PPT)
4.3运用选择结构描述问题求解过程
复习巩固
顺序结构是最常见、最简单的程序结构,其语句执行顺序是自上而下依次执行的。
问题引入
例:一水果店做活动:桔子原价2.5元/斤,如果一次购买超过5斤(含5斤),按2.3元/斤计算,如果一次购买超过10斤(含10斤),按2.1元/斤计算。
设计一个程序输入桔子的重量(weight),计算出应付的金额(pay)
分析问题设计算法
这个问题比较简单,我们可以直接下出如下算法:
①输入桔子的重量weight
②如果weigh<5,那么pay=
weight
2.5,转到⑤
③如果weigh>=5且weight<10,那么
pay=weight
2.3,转到⑤
④如果weight>=10,那么pay=weight
2.1,转到⑤
⑤输出pay值,程序结束
用流程图描述算法
通过流程图,我们可以得出若编写程序,需要用哪种基本控制结构?
开始
输入桔子的重量weight
Weight<5?
pay=weight
2.5
5<=Weight<10?
Weight>=10?
pay=weight
2.3
pay=weight
2.1
输出应付的金额pay
结束
否
否
否
是
是
是
1.单分支if语句
在程序设计中,主要使用条件语句(if语句)来实现判断和选择。
格式:
if
(条件表达式):
语句A
①if(条件表达式)后面加冒号“:”
②当语句A是由多个语句构成的复合语句时,所有语句严格遵循相同的缩进。
③如果条件表达式为真,则找行语句A,然后继续往下执行;如果条件表达式为假,则不执行语句A,然后继续往下执行。其执行过程如图4-7所示。
执行过程:
编写程序
weight=int(input(“输入桔子的重量:”
))
if
weight<5:
pay=weight
2.5
if
(weight>=5
and
weight<10):
pay=weight
2.3
if
weight>=10:
pay=weight
2.1
print(“应付的价格为:%.2f元”%pay)
随堂练习
a=int(input(
))
b=int(input(
))
x=a+b
if
a>b:
x=a-b
print(x)
若从键盘上输入3和4,那么x的值是(
)
A
-1
B
5
C
7
D
9
C
2.双分支if结构
格式:
if
(条件表达式):
语句A
else:
语句B
①if(条件表达式)后面加冒号“:”,else语句后也要加冒号“:”。
②当语句A和语句B是由多个语句构成的复合语句时,所有语句严格遵循相同的缩进。(通常使用tab键来缩进)
③如果条件表达式为真,则执行A,然后继续往下执行。如果条件表达式为假,则执行语句B,然后继续往下执行。其执行过程如图4-9所示。
问题解决
利用python编程解决:输入二个整数a,b,输出其中较大的那个数
程序一:
a=int(input(
“a=”
))
b=int(input(“b=”
))
if
a>b:
max=a
if
amax=b
print(“较大的数为:”,max)
程序二:
a=int(input(
“a=”
))
b=int(input(“b=”
))
if
a>b:
max=a
else:
max=b
print(“较大的数为:”,max)
3.If语句的嵌套
应用if条件语句可以快速地实现程序的分支选择,但当分支比较多时,用if...elif...else语句来实现比较简便
格式:
if
(表达式1):
语句1
elif(表达式2):
语句2
......
elif(表达式n):
语句n
else:
语句n+1
If…elif…else语句执行过程
程序转换
weight=int(input(“输入桔子的重量:”
))
if
weight<5:
pay=weight
2.5
if
(weight>=5
and
weight<10):
pay=weight
2.3
if
weight>=10:
pay=weight
2.1
print(“应付的价格为:%.2f元”%pay)
下面这个多分支结构,能不能用if…elif…else改写
?
程序转换
weight=int(input("输入桔子的重量:"
))
if
weight<5:
pay=weight
2.5
elif
weight<10:
pay=weight
2.3
else:
pay=weight
2.1
print("应付的价格为:%.2f元"%pay)
随堂练习
1.若希望当a的值为奇数时,表达式的值为“真”,a的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是(
)
A.
a%2==1?
B.
not(a%2==0)
C.
a%2?!=0
D.a%2
D
2.运行下列python程序,输出结果为True,则空白处应为(
)
a=15
b=46
if____:
print(‘True’)
else:
print(‘Flase’)
A.
a=b
B.
a>b
C.
aD.
a==b
c
作业
输入三个数a,b,c,输出其中最大的那个数。请问解决此问题方法唯一吗?请用两种方法编程解决此问题。