资源简介 (共14张PPT)第13节义卖竞价(二)——擂台算法1.掌握Python分割函数的含义和使用2.使用Python擂台算法找最值学习任务学习过程新课导入在义卖中,每次竞价的人数是不确定的,而且常常超过三个人。因此,设置确定的a、b、c三个变量的程序显然是不能满足实际需要的。另外,上节课的程序只能输入和输出价格,我们能不能完善程序,使程序能输入和输出优胜者的姓名和出价呢?我们已经掌握了三个数据比较大小的表达式构建和选择结构的写法。现在要扩展到多人,其算法跟三人竞价相似,多人竞价的关键,就是重复的比较过程。与打擂台很相似,留在台上的是胜者。我们可以根据输入的人数,构建循环结构,从而找到最高的价格。假设我们先不实现输入输出优胜者的“姓名、价格”的功能,只描述一个多人竞价找出最高出价的算法,请同学们画出流程图。(提示:构建循环结构,人数可设置为n)一、算法描述及流程图如何将三个数据取最大值的方法应用到若干数据中?确定循环体有哪些操作?一、算法描述及流程图二、数据的拆分与提取1.分割函数split任务要求不仅能够比较出价大小,还要能显示出价者姓名,也就是要把姓名和出价联系起来。这就需要我们输入姓名和出价的数据,以及输入数据后把“姓名”“价格”的信息提取出来,分别储存到不同的变量中。Python语言提供了字符串分割的函数。二、数据的拆分与提取1.分割函数split分割出来的子串被依次保存在以x变量名开头的若干个位置中,如“12”被保存在x[0]中,“4”被保存在x[1]中,按照顺序依次往后排。其中每一个都可以看作单独的字符串类型变量。二、数据的拆分与提取2.数据拆分利用分割函数split(),我们可以用空格来分割“姓名”和“价格”,拆分后,第1个数据为姓名,第二个数据则为出价。数据拆分语句如下:slt=indata.split(“”)name=slt[0]maxmark=slt[1]存储拆分后数据的变量存储输入数据的变量存储拆分出来的姓名的变量存储最大值的变量变量定义可依据个人习惯,比如储存姓名的变量你也可以定义为“xingming”,变量名以直观简洁为宜。二、数据的拆分与提取2.数据拆分比如,输入“李小萌100”,姓名和价格的数据会被空格拆分,“李小萌”被保存在slt[0],“100”被保存在slt[1]。slt=indata.split(“”)name=slt[0]maxmark=slt[1]三、程序的实现接下来,请同学们参考流程图编写程序。然后设计一组测试数据,在Python环境中测试自己写的程序是否能够实现任意数量的人参与竞价。1.编写程序三、程序的实现n=int(input(“参与竞价人数:”))indata=input(“姓名和出价:”)slt=indata.split(“”)name=slt[0]maxmark=float(slt[1])foriinrange(2,n+1):indata=input(“姓名和出价:”)slt=indata.split(“”)mark=float(slt[1])if(mark>maxmark):maxmark=markname=slt[0]print(name,“”,maxmark)三、程序的实现n=int(input(“参与竞价人数:”))indata=input(“姓名和出价:”)slt=indata.split(“”)name=slt[0]maxmark=float(slt[1])foriinrange(2,n+1):indata=input(“姓名和出价:”)slt=indata.split(“”)mark=float(slt[1])if(mark>maxmark):maxmark=markname=slt[0]print(name,“”,maxmark)竞价人数转化为整数型用空格分割姓名和出价设置循环次数输出最终优胜者的姓名和出价设置输入变量姓名储存在变量name价格数值转化为浮点型,循环结构中的输入变量循环结构中的分割函数split()最大值储存在变量maxmark价格数值转化为浮点型,如果mark的值大于maxmark则把mark的值赋给maxmark每次比较的值存储在变量mark且姓名储存在变量name四、练习与思考设计一个程序:随机生成N个随机整数(范围自定),并求出最大值、最小值和比平均值大的值。如何存储生成的随机数?如何构建循环结构求出最小值和比平均值大的值? 展开更多...... 收起↑ 资源预览