购买纪念品的最佳方案设计报告
一、引言
在运用计算机解决实际问题的过程中,如何把求解问题的算法告知计算机,就需要有一种能够实现人机交互的语言,而这种语言就是计算机程序设计语言。
二、设计目的
如今,网上购物已经成为人们生活中的一部分。通过网购,人们不仅可以方便地在各家电商中获取商品的相关信息,而且可以对商品进行比质比价,从而以优惠的价格购得心仪的商品。为了购得既经济适用又美观大方的商品,人们就要根据需求设计好购买方案。
了解Python程序设计语言的基础知识,掌握程序的顺序结构、选择结构和循环结构三种控制结构,学会使用程序设计语言实现简单算法,体验程序设计的基本流程,掌握程序调试与运行的方法。
三、需求分析和功能描述
1.需求分析
对购买方案的需求分析包括:
?
(1)了解实现算法的程序设计语言。
(2)用程序控制结构设计购买纪念品的最佳方案。
2.功能描述
(1)了解Python程序设计语言的基础知识。
(2)运用顺序结构设计最佳方案。
(3)运用选择结构设计最佳方案。
(4)运用循环结构设计最佳方案。
(5)综合运用三种结构设计最佳方案。
四、设计工具和方法
利用思维导图工具和“头脑风暴”的方法组建团队、明确任务;
采用Python语言和程序设计结构控制方法,实施探究。
五、设计步骤与过程
1.明确问题,了解利用Python程序设计语言基础知识解决问题
求解购买纪念品的最佳方案问题,需要知道各商品的单价,才能设计出最佳方案。现在设总预算为S,需要购买10个不同品种的商品数量为x1,x2,…,x10,则求解问题的思路如下
:
(1)上网搜索各个商品的价格。
(2)求出各个商品的最低单价a1,a2,…,a10。
(3)令E=S-(a1×x1+a2×x2+…+a10×x10),求x1,x2,…,x10的值(其中x1,x2,…,x10为正整数),使E最小(E≥0)。
我们以python语言为例,对问题进行求解,因此我们必须要先了解Python程序设计语言的基础知识。
(1)Python程序设计语言规定标识符由字母(A~Z,a~z)、数字(0~9)、下划线组成,并且其第一个字符必须是字母或下划线,而不能是数字,如s1,k,num,pai等。在标识符中,字母大小写是有区别的,如“value”与“Value”是两个不同的标识符。
(2)Python能够直接处理的常用数据类型有Number(数值)、String(字
符串)、List(列表)、Tuple(元组)、Sets(集合)、Dictionary(字典)等。
(3)在Python程序设计语言中对常量或变量进行运算或处理的符号称为运算符,参与运算的对象称为操作数。常用的运算符有算术运算符、逻辑运算符、关系运算符、赋值运算符、成员运算符等。由运算符、操作数连接而成的式子称为表达式。操作数可以是常量、变量、函数等。
(4)函数是Python语言程序的基石,是组织好的、可重复使用的、用来实现单一或相关联功能的代码段。Python
默认带有一些常用的函数,如求绝对值函数、求和函数、求最大值和最小值函数等。
2.运用顺序结构设计最佳方案
问题分解1:项目小组成员在某网购站点上获取到如下信息:笔记本1的单价是3元,笔记本2的单价是5元,如果两种笔记本同时购买,价格可以打8折。计算一下,购买笔记本1和笔记本2各n本,可以优惠多少元?(以元为单位,四舍五入到小数点后两位)
解决上述问题的方法有多种,其中一种方法步骤如下:
(1)分析问题。
先求出不使用优惠而单独购买所需费用,再求出使用优惠方案购买所需费用,两者相减即为节省的费用。
(2)设计算法。
根据上面的分析,设计算法如下:
①输入n的值;
②令a=3×n;
③令b=5×n;
④令y=(a+b)×(1-0.8);
⑤输出结果y;
⑥结束。
其顺序结构流程图如右图所示。
(3)编写程序。
根据设计的算法,编写出该问题的程序代码如下:
3.运用选择结构设计最佳方案
问题分解2:
项目小组成员在某购物网站上了解到某种笔记本搞优惠活动,规定一次购买6本以上(含6本)10本以下(含10本)打9折,一次购买11本以上(包含11本)打8折。怎样根据笔记本的单价和购买数量编写程序计算总费用?
解决上述问题的方法有多种,其中一种步骤如下:
(1)分析问题。
设项目小组购买笔记本的数量为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的值即为所求的总费用。
(2)设计算法。
根据上面对问题的分析,解决问题的算法描述如下:
①输入s,p的值;
②如果s<6,则j=1.0;
③如果s≥6而且s≤10,则j=0.9;
④如果s≥11,则j=0.8;
⑤t=s×p×j;
⑥输出t的值;
⑦结束。
算法的流程图如右图所示。
(3)编写程序。
根据上面设计的算法,编写出解决该问题的程序如下图所示:
(4)运用循环结构设计最佳方案
问题分解3:
项目小组经过讨论,最后选择购买单价分别为1.8元的笔记本、1.9元的笔、2.1元的小饰品作为活动的奖品和纪念品,每一种物品至少买100件,并且尽可能地用完1000元经费。如何设计方案,才能实现购买物品数量最多呢?如数量相同的情况下余额最小的方案为最佳,则最佳方案中每一种物品的数量是多少?余额是多少?
要解决这个问题,需要用到循环嵌套的知识,下面提供了其中一种解法:
(1)分析问题。
设购买单价为1.8元、1.9元、2.1元的物品数量分别为x,y,z,当前余额为r元,所买物品总数量为s,根据题意有下面关系式:1.8x+1.9y+2.1z≤1000(x,y,z为自然数),我们分别将x,y,z从100至555,526,476逐个穷举,如果x,y,z的值满足式子1.8x+1.9y+2.1z≤1000(x,y,z∈N
,N
表示自然数),如x+y+z>s,则s=x+y+z,r=1000-(1.8x+1.9y+2.1z),并记录此时x,y,z的值;如x+y+z=s,且1000-(1.8x+1.9y+2.1z)(2)设计算法。
根据上述的分析,可设计出如下的算法:①令x1=100,令y1=100,令z1=100,令s=300,令r=1000-(100×1.8+100×1.9+100×2.1);
②x从100~555穷举;③y从100~526穷举;④z从100~476穷举;
⑤如果1.8x+1.9y+2.1z≤1000,若x+y+z>s,则s=x+y+z,r=1000-(1.
8x+1.9y+2.1z),x1
=
x,y1
=
y,z1
=
z;若x+
y+
z=
s,且1
0
0
0
-
(
1.8x+
1.9
y+
2.1
z)<
r,则r=
1
0
0
0
-(1.8x+1.9y+2.1z),x1=x,y1=y,z1=z;
⑥转步骤④;
⑦转步骤③;⑧转步骤②;
⑨输出x1,y1,z1,s和r的值。
(3)编写程序。
根据上面设计的算法,编写出解决该问题的程序如下:
六、设计成果
1.程序设计语言是实现算法、解决问题的有力工具
在运用计算机程序求解问题时,需要有一种能够实现人机交流的语言,即程序设计语言。人们通过这种语言把求解的方法和步骤告诉计算机,计算机则按照程序的流程自动求解问题。而我们选择和利用的计算机程序设计语言——Python是一个强大的工具,语法友善,功能强大。
2.基本结构是编写优质的基础
用基本结构按一定规律组成并对算法进行描述,保证和提高算法的质量,是编写优质的基础。基本结构包括顺序结构、选择结构和循环结构。
(1)用顺序结构解决问题分解1。输入n的值为50,得到结果如下所示。
(2)用选择结构解决问题分解2。输入s的值为100,p的值为3.2,得结果如下所示:
(3)用选择结构解决问题分解3,结果如下。
七、结语
本章通过“设计购买物品的最佳方案”项目,进行自主、协作、探究学习,让同学们了解Python程序设计语言的基础知识,掌握程序的顺序结构、选择结构和循环结构三种控制结构,学会使用程序设计语言实现简单算法,体验程序设计的基本流程,掌握程序调试与运行的方法,从而将知识建构、技能培养与思维发展融入运用数字化工具解决问题和完成任务的过程中,促进信息技术学科核心素养达成,完成项目学习目标。