第六题(难度系数5)
编程实现:
老师给小猫出了一道题:在列表 1 中生成 5 个在 1~99 范围内的随机整数,然后按照从大到小的顺序将它们依次移到列表 2 中。
例如:在列表 1 中随机生成的整数依次是“12,3,1,13,17”,在处理之后列表 2 中的整数依次是“17,13,12,3,1”。
具体要求:
1、每次点击绿旗后,在屏幕中都显示如图-1 所示的列表 1 和列表 2,且在列表 1 中随机生成 5 个在 1~99
范围内的随机整数,而列表 2 中内容为空。然后小猫说“5 秒钟后开始处理”,并等待 5 秒钟。
2、处理数据时,每间隔 1 秒钟,都将列表 1 中当前最大的一个数字移动到列表 2 中,注意:是移动,不是复制。
3、当处理到列表 1 为空后,列表 2 中的数据应从大到小排列,如图-2 所示,然后小猫说“处理完啦。”2
秒钟,然后程序结束。
本题测试知识点
本题主要考查列表的相关操作,包括列表的遍历、增加、删除等基本操作;同时考查一个基本的比较大小的算法。只要上课时能够完成平时的作业,解决本题基本没有障碍!
解题步骤
前置准备:
1、创建2个列表遍历,分别存储生成的5个列表项
2、创建3个普通变量:最大数用来存储列表中的最大数;索引用来存储最大数的索引值,之后删除要用到;变量i临时变量,用于取出列表第i项,与最大数进行比较用
编程实现:
首先在列表 1 中生成 5 个在 1~99 范围内的随机整数,代码如下:
代码很简答,主要执行一个循环5次,每次将1~99之间的一个随机数加入到列表1中,这里无需多加解释。
本题主要的算法逻辑在接下来的代码中:
1.首先,等待5秒后,执行一个外层循环,循环次数为列表1的长度,即5次;
2.第二步,在循环体内,每次循环都进行一些初始化操作,将变量索引、零时变量i设置为1,每次假设列表1中的第一项都是这个类表中的最大的数。
3.第三步,这个循环中,最主要的算法找出列表中最大的数,同时保存对应的索引值。
4.第四步,删除列表1中索引对应的值,同时将最大数加入到列表2中。
5.重复执行,直到列表1中无数据。
将上边两段代码连接即是本题的解题源码,你也可以在公众号内回复003获得本题全部源码。