学习目标:
1.实现0元素的移动;
2.列表排序和原位置;
3.求解四位数。
学习内容:
示例一 实现0元素的移动,题目如下:
列表中存放一组数据[0, 20, 0, 4, 31],请实现将列表中的所有的零元素移动到列表的尾部,非零的元素按照原来的顺序排列。
代码演示及解读:
ls = [0, 20, 0, 4, 31]
print(ls) #打印出原有的数据
n1 = len(ls) #计算出原有数据的长度
ls1 = set(ls) #将列表转化为集合的形式,集合具有将相同元素只显示一次的作用
ls1.remove(0) #只能删除一次,将集合中可能含有的零元素删除
n2 = len(ls1) #计算出不含零元素集合的长度
ls = list(ls1)#将集合再次转化为列表
#n1 - n2 表示原有数组中含有零元素的个数,我们通过循环来在现有列表的尾部再添加上
for i in range(0, n1 -n2):
ls.append(0)
print(ls) #显示要求的列表
运行结果演示:
示例二
代码演示:
s = input()
x = s.split(" ")
a = [] #用来存放元素
b = [] #用来存放元素的序号
n = 0 #表示元素的初始序号
#该循环实现输入元素的列表化以及存储输入元素的序号
for i in range(len(x)):
a.append(int(x[i])) #将元素转化为整型,存在a列表中
n = n + 1
b.append(n) #存储原序列的序号
# print(a) #显示输入列表的元素
# print(b) #显示输入列表元素的序号
#完成数字的排列
for i in range(len(x)):
for j in range(i+1, len(x)):
#比较大小,按照要求进行交换
if a[i] > a[j]:
a[i], a[j] = a[j], a[i] #交换元素
b[i], b[j] = b[j], b[i] #交换编号
print(a)
print(b)
运行结果演示:
示例三 求解四位数,要求如下:
一个四位数,如果在它的左边加一个数字8,就可以得到一个五位数;如果在它的右边加一个数字6,就可以得到另一个五位数,这两个五位数的和是12141,求原来这个四位数是多少?
解析:我们令这个四位数为x,
在它的左边加一个数字8,就可以得到一个五位数:810000 + x;
在它的右边加一个数字6,就可以得到另一个五位数:x10 + 6
这两个五位数的和是121410
代码演示:
for x in range(1000, 10000): #这四位数可能出现的范围
M = 8*10000 + x #第一个五位数
N = x*10 + 6 #第二个五位数
if M + N == 121410:
print(x)
运行结果演示: