内容正文:
3.2 Python 语言程序设计
第三章 算法的程序实现
必修一《数据与计算》
3.2.3 分支结构的程序实现
python顺序结构的算法设计
python分支结构的算法设计
1
2
学习目标
复习:算法三要素
复习
算法
三要素
数据
控制
转移
运算
算法的定义
算法的三种结构
顺序结构
分支结构
循环结构
算法的特征
算法的描述
有穷性
可行性
确定性
0个或多个输入
1个或多个输出
算法是解决问题的方法与步骤,算法是解决问
题的精确描述。
自然语言
流程图
伪代码
计算机程序语言
必修一:数据与计算
回顾:程序设计的三种结构
任何算法(程序)都可以由顺序结构、分支结构和循环结构这三种基本结构组合来实现。
Step A
Step B
1.顺序结构
条件?
Step A
Step B
否
是
2.分支结构
循环体
条件?
是
否
3.循环结构
循环体
条件?
是
否
当型循环结构
直到型循环结构
必修一:数据与计算
3.2.2 顺序结构的程序实现
开始
结束
输入身高、体重
计算BMI=体重/身高2
输出BMI
第1行语句含义:输入身高数据并把它变为实型赋值给变height。
第2行语句含义:输入身高数据并把它变为实型赋值给变weight。
第3行语句含义:把weight/height**2赋值给BMI。
第4行语句含义:输出BMI的值。
1 height=float(input(“请输入你的身高:”))
2 weight=float(input(“请输入你的体重:”))
3 BMI=weight/height**2
4 print(BMI)
顺序结构中,按语句的自然顺序依次执行。
Step A
Step B
1.顺序结构
流程图如下:
Python程序代码如下:
设计Python程序计算BMI。
必修一:数据与计算
3.2.2 顺序结构的程序实现
1 a=input (“请输入一个数a:” )
开始
输入a,b的值
c ← a
a ← b
b ← c
输出a,b的值
开始
流程图如下:
Python代码如下:
2 b=input (“请输入一个数b:”)
3 c=a #语句1
4 a=b #语句2
5 b=c #语句3
6 print (a,b)
设计一个算法,将两个变量a、b的值交换。
必修一:数据与计算
3.2.2 顺序结构的程序实现
在Python中,两个变量值的互换可以不借助第三个变量直接进行:
1 a=input (“请输入一个数a:”)
2 b=input (“请输入一个数b:”)
3 a ,b = b,a
4 print (a,b)
1 a=input (“请输入一个数a:” )
2 b=input (“请输入一个数b:”)
3 c=a #语句1
4 a=b #语句2
5 b=c #语句3
6 print (a,b)
如果调换上述程序中语句1、语句2或语句3的位置,程序的运行结果将会如何变化?
问题与讨论
必修一:数据与计算
1、编写一个程序,输出“张三同学,你好!”
2、编写一个程序,输出你的姓名和学号
练一练
1 print("张三同学,你好!" )
1 name = input('请输入你的姓名:')
2 number = input('请输入你的学号:')
3 print('你的姓名:', name)
4 print('你的学号:', number)
必修一:数据与计算
3.2.3 分支结构的程序实现
分支结构
对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。
90%
50%
20%
80%
生
活
中
的
判
断
必修一:数据与计算
3.2.3 分支结构的程序实现
单分支结构 的语法形式如下:
if <条件表达式>:
<语句块1>
条件表达式
语句块1
T
F
Python 条件表达式主要分为以下几类:
① 布尔表达式:布尔表达式是Python 中最简单的条件表达式,它由一个或多个布尔操作符组成,如 and、 or、not 等。布尔表达式的结果为布尔值,即True 或False。
② 赋值表达式:赋值表达式是一种将某个值赋给变量的表达式,它由变量名和等号组成。在赋值表达式中,等号右边的表达式会被计算,并将结果赋值给变量。
③ 关系表达式:关系表达式是计算机程序中用关系运算符连接两个表达式形成的式子,用于比较数值或变量的逻辑关系。
③ 复合表达式:复合表达式是由多个表达式通过逻辑运算符(如 and、or)组合而成的表达式。在复合表达式中,逻辑运算符两边的表达式都会被计算,然后根据逻辑运算符的优先级和结合性,计算出整个表达式的结果。
单分支结构
缩进
关键字
冒号
必修一:数据与计算
3.2.3 分支结构的程序实现
单分支结构 的语法形式如下:
if <条件表达式>:
<语句块1>
1 x = int(input(“请输入一个整数:”))
【例】用Python变成实现输入一个整数x,判断其是否是偶数。
2 if x%2==0:
3 print(x,“是一个偶数!")
缩进
关键字
冒号
开始
输入整数x
X%2==0?
输出x是偶数
N
Y
必修一:数据与计算
3.2.3 分支结构的程序实现
语句块缩进在Python中,行尾冒号的作用是告诉Python接下来要创建一个新的语句块。因此,只要某一行以冒号结尾,它接下来的内容就应该有缩进。Python中有一个惯例:总是将语句块缩进4个空格。
拓展
链接
有如下Python代码
x=int(input(“请输入一个整数:”))
i f x%2==0 :
print(x,“是一个偶数!”)
关键字 一个空格 条件表达式 英文冒号
一个缩进(四个空格 ) 语句块
必修一:数据与计算
双分支结构 的语法形式如下:
3.2.3 分支结构的程序实现
1 a = int(input(“请输入一个整数”))
例如:
双分支结构
2 if a%2==0 :
3 print(a,“是一个偶数!")
4 else:
5 print(a,“是一个奇数!")
if <条件表达式> :
<语句块A>
else :
<语句块B>
缩进
缩进
关键字
冒号
同一个if 、else下方的语句块必须采用相同的缩进来标识。
条件?
Step A
Step B
否
是
必修一:数据与计算
图3.2.7 区间测速示意图
目前,国内很多高速公路都启用了区间测速。
现有一段长为25千米的测速区间,小车的限速为100千米/小时。数据中心需要编写一段程序,用来判断某辆小车再次测速路段是否超速。
☼ ☼ ☼ 区间测速 ☼ ☼ ☼
3.2.3 分支结构的程序实现
必修一:数据与计算
(1)抽象与建模
判断结果=
{
“正常”(v≤100)
“超速”(v>100)
其中v=s × 3600/t
通过上述问题抽象,可以建立如下计算模型:
判断超速与否,首先要计算车辆的平均速度,然后和限定车速作比较,低于限定车速属于正常,否则就是超速。这就和行驶距离与时间有关,即,v=s/t。于是我们设定以下变量s、t、v。
3.2.3 分支结构的程序实现
变量名 数据类型 含义
s 数值型-整型 区间距离(千米)
t 数值型-整型 用时(秒)
v 数值型-实型 平均车速(千米/时)
表3.2.6 区间测速数据分析表
必修一:数据与计算
(2)设计算法
图3.2.8 超速判断算法流程图
根据上述计算模型,解决问题的关键是根据v值做出判断,于是可以采用分支结构的计算方法:
3.2.3 分支结构的程序实现
开始
结束
s ← 25
输入t
计算评价车速v
V<=100?
输出“正常”
输出“超速”
是
否
必修一:数据与计算
(3)编写程序
3.2.3 分支结构的程序实现
(4)调试运行程序
程序调试是将编制的程序投入实际运行前,用手工或 编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。
1 s=25
2 t=int(input(“请输入用时(秒):”))
3 v=s*3600/t
4 if v<=100 :
5 print(“正常”)
6 else:
7 print(“超速”)
必修一:数据与计算
【分析】输入一个整数 a,拿这个整数和 2 取余数,余数为0,该整数是偶数,即 a%2==0,否则就是奇数。
1 a=int(input ( "请输入一个整数:"))
开始
输出a是奇数
a%2==0
输出a是偶数
输入整数a
Y
N
结束
1、从键盘录入一个整数,判断奇数还是偶数。
2 if a%2==0 :
3 print(a,“是偶数!")
4 else:
5 print(a,“是奇数!")
流程图
Python代码如下:
练一练
必修一:数据与计算
2、有如下程序段:
若程序运行后分别输入20和70,打印出的score的值为( )
A. 30,50 B. 20,70 C. 40,80 D. 20,10
练一练
A
1 score = int(input("请输入分数:"))
2 if score > 60:
3 score -= 20
4 print(score)
5 else:
6 score += 10
7 print(score)
输入20,20<=60
20+10=30
输入70,70>60
70-20=50
必修一:数据与计算
3、有以下Python程序:
(1)这个程序共有________________个变量。
(2)除顺序结构外,此程序中主要使用的程序结构是_____________。
(3)输入的体重和身高分别是80和1.8时,输出结果是____________。
1 w=float(input(“请输入体重(kg):”))
2 h=float(input(“请输入身高(m):”))
3 bmi=w/h**2
4 if bmi<18.5:
5 print(“偏瘦”)
6 elif bmi>=18.5 and bmi<24:
7 print(“正常”)
8 else:
9 print(“偏胖”)
3
分支结构
偏胖
练一练
80/1.8*1.8==24.7
必修一:数据与计算
开始
输入a,b
a<b?
输出b
输出a
结束
Y
N
画出流程图
1 a = int(input('请输入第一个整数a:'))
2 b = int(input('请输入第二个整数b:'))
3 if a < b :
4 print(“最大值是:” ,b)
5 else:
6 print(“最大值是:” ,a)
编程求几个数中的最大值。(1) 分别输入两个数,输出它们中的最大值。
思考与练习(page95第二题)
方法一:直接比较
输入两个整数 a和b,判定a>b? 如果a>b,输出a,否则输出b。
必修一:数据与计算
方法二:函数封装
方法三:函数封装
编写一个python程序,分别输入两个数,输出它们中的最大值。
1 def max(a,b) :
2 if a > b :
3 return a
4 return b
5 print(max(12,27))
1 a, b = eval(input(‘请输入两个数 a,b:'))
2 if a > b :
3 a, b = b, a #交换a,b的值
4 print(a,b)
输出结果:27
思考与练习(page95第二题)
必修一:数据与计算
本节课到此结束
$