(共16张PPT)
3.3.1 解析算法
DATA ACQUISITION AND CODING
《数据与计算》
0.用算法解决问题的过程
抽象与建模
找到核心要素
得出计算模型
设计算法
明确输入输出
描述数据处理
编写程序
用计算机程序语言描述,形成计算机程序
调试运行程序
关注语法错误
逻辑错误等
1.基本思想
【解析算法】
是指根据问题的前提条件与所求结果之间的关系,找出求解问题的数学表达式,并通过表达式的计算来实现问题的求解。
解题思路:
明确问题的前提条件
明确要求的解
找出前提条件与所求解之间关系的数学表达式
1.基本思想
【解题关键】
要确保数学表达式的正确性
在程序中正确描述该数学表达式。(python运算符的正确使用)
2. 实例分析
Q1:一个小球从高处自由落体落下,经过5秒后到达地面,已知重力加速度g为10m/s,请问小球从距离地面多高的地方落下?
1.抽象与建模
找到核心要素(问题的前提条件和要求的解)
得出计算模型
前提条件:
自由落体运动
时间为5秒,设为t
重力加速度g为10m/s,设为g
要求的解:
小球下落的高度,假设为h
根据自由落体运动:
h=1/2gt2
2. 实例分析
Q1:一个小球从高处自由落体落下,经过5秒后到达地面,已知重力加速度g为10m/s,请问小球从距离地面多高的地方落下?
2.设计算法
输入数据
处理数据
输出数据
无
h=1/2gt2
输出h
输入本金p
输入期数t
输出h
t=5
g=10
h=1/2gt2
2. 实例分析
Q1:一个小球从高处自由落体落下,经过5秒后到达地面,已知重力加速度g为10m/s,请问小球从距离地面多高的地方落下?
3.编写程序
t=5
g=10
h=g*t**2/2
print(h)
输入本金p
输入期数t
输出h
t=5
g=10
h=1/2gt2
2. 实例分析
Q2:判断一个数是否是3和7的公倍数,请用程序实现上述功能。
1.抽象与建模
找到核心要素
得出计算模型
假设要判断的数为 x
判断条件:3和7的公倍数
3和7的公倍数
x%3==0 and x%7==0
x是公倍数或x不是公倍数
2.设计算法
输入数据
处理数据
输出数据
输入x
x%3==0 and x%7==0
输出x是公倍数或x不是公倍数
3.编写程序
x=int(input())
if x%3==0 and x%7==0:
print(‘x是公倍数’)
else:
print(‘x不是公倍数’)
2. 实例分析
Q3:判断一个三位数是否是水仙花数(水仙花数:三位数各个位上的数的三次方之和等于它本身,例如:153=1^3+5^3+3^3),请用程序实现上述功能。
1.抽象与建模
找到核心要素
得出计算模型
假设要判断的数为y
判断条件:各个位上的数的三次方之和等与本身
个位:g=y//1%10
十位:s=y//10%10
百位:b=y//100%10
g**3+s**3+b**3==y
y是水仙花数或x不是水仙花数
2.设计算法
输入数据
处理数据
输出数据
输入y
个位:g=y//1%10
十位:s=y//10%10
百位:b=y//100%10
g**3+s**3+b**3==y
输出y是水仙花数或x不是水仙花数
3.编写程序
解析算法的概念
课堂小结
是指根据问题的前提条件与所求结果之间的关系,找出求解问题的数学表达式,并通过表达式的计算来实现问题的求解。
解析算法的解题思路
明确问题的前提条件
明确要求的解
找出前提条件与所求解之间关系的数学表达式
用算法解决问题的一般过程
抽象建模,设计算法,编写程序,调试程序
3. 课堂小结
4. 课堂实战
Q1:输入三角形三条边的边长a,b,c,利用海伦公式求出三角形的面积,请编写程序实现上述功能。
4. 课堂实战
Q2:公共自行车24小时内租赁费用计算。某市的公共自行车24小时内租车收费标准为:每次1小时内免费,超时后按1元/小时收取(不足1小时按1小时计),24小时内最高限额为10元。
输入租赁时常后,输出费用,请完成填空,并用程序实现上述功能。
(1)若用变量pay存储租车费用,用变量time存储租赁时间,根据题中收费标准,租车费用pay与租赁时间time之间的关系可用数学公式描述为 ;
(2)公共自行车租赁费用pay的计算可用解析算法,具体描述如下,请补充完善。
①给定24小时内的租赁起始时间和结束时间:输入租赁开始的时间和结束的时间。
注:时间的输入格式为hh:mm:ss,如10:23:11。
②计算租赁时间time:计算租赁起始时间和结束时间的时间差time。
③计算租赁费用pay:若time小于等于1,则pay为0;若 ,则pay为time;若time大于10,则pay为10。
4. 课堂实战
(3)编写程序。用变量stime、etime、time、pay分别存储租赁开始时间、结束时间、租赁时间和租赁费用。计算公共自行车租赁费用的某Python程序如下,请在划线处填入相应代码,实现程序功能。
stime=input('租车开始时间:')
etime=input('租车结束时间:
if int(etime.split(":")[0])>=int(stime.split(":")[0]):
time=int(etime.split(":")[0])-int(stime.split(":")[0])
if int(etime.split(":")[1])>int(stime.split(":")[1]):
time=time+1
elif int(etime.split(":")[1])==int(stime.split(":")[1]) andint(etime.split(":")[2])>=int(stime.split(":")[2]) :
time=time+1
if time<=1:
pay=0
elif :
pay=time
else:
②
print(pay)
(4)完善该程序后,运行程序,输入租车开始时间为“9:40:6”,租车结束时间为“15:35:32”,则程序运行结果
为 。
4. 课堂实战
Q3:配股案例。某股于3月21日起停牌进入配股缴款期,配股缴款截止日期为3月27日。由于配股后股价将除权,忘记或者不参与配股者或不是全额参与配股者,复牌后将面临损失。根据安排,该股本次配股价格为7.02元/股,按照每10股配售1.9股的比例向全体股东配售,其中:
配股除权价=(除权登记日收盘价+配股价*每股配股比例)/(1+每股配股比例)
全额参与配股的最大配售量计算规则:
(1) 该股的配售比例是0.19。也就是说,假如你有10000股该股股份,最大配售量即为10000*0.19=1900(股)。
(2)如果所获配股份额不足1股,则0.65股及以上的为1股,0.65股以下的为0股。
回答下列问题:
(1)若该股的除权登记日收盘价为16.05元,则此次该股的配股除权价为 元;
(2)假如你有15000股该股股份,最大配售量为 股;
(3)如果不参与配股,该股配股除权后,将直接损失 %;
(4)编写程序。用变量spj、pgj、bili、num、cqj、maxps分别存储除权登记日收盘价、配股价、每股配股比例、持有的该股股份数、配股除权价和最大配售量。计算此次该股的配股除权价和最大参与配股配售量的Python程序
4. 课堂实战
flag=False
pgj=7. 02 #配股价
bili=0.19 #每股配股比例
spj=float(input("请输入除权登记日收盘价:"))
num =float(input("请输入持有的金风科技股份数:"))
cqj = ① #配股除权价
maxps= num*bili #最大配售量
if ② :
flag=True
if flag :
print("配股除权价:", cqj,"最大配售量:",int(maxps)+1)
else:
print("配股除权价:", cqj,"最大配售量:",int(maxps))
5.课后思考
思考:如果要找出100以内的所有3和7的公倍数,该如何用程序实现?