day3

---------------------------------------------------------------

实例005:三数排序

题目: 输入三个整数x,y,z,请把这三个数由小到大输出。

分析:很常见的排序,不直接调排序函数的话,可以多写几个if,但是自己不满足,试试冒泡排序,还好写出来了

1 list = []
 2 for i in range(1,6):
 3     list.append(int(input(f"请输入第{i}个数:")))
 4 for j in range(0,len(list)):
 5     k = 0
 6     while k<=(len(list)-j-2):
 7         if list[k] >list[k+1]:
 8             list[k+1],list[k] = list[k],list[k+1]
 9         k+=1
10 print(list)

个人还比较满意,哈哈哈,看看标准答案:

1 raw = []
 2 for i in range(3):
 3     x = int(input('int%d: ' % (i)))
 4     raw.append(x)
 5 
 6 for i in range(len(raw)):
 7     for j in range(i, len(raw)):
 8         if raw[i] > raw[j]:
 9             raw[i], raw[j] = raw[j], raw[i]
10 print(raw)

感觉原理差不多,不过标准答案比我的易读一点,相对来说少两行,把raw[i]看成是较大的数,然后依次比较。

最后上个调用函数的:

1 raw2=[]
2 for i in range(3):
3     x=int(input('int%d: '%(i)))
4     raw2.append(x)
5 print(sorted(raw2))

这直接砍掉一半的代码,编写的效率确实高,sorted(raw2)可直接对列表排序,也可直接调用raw2.sort()方法,需要注意的是raw2.sort()方法会改变原列表,而sorted()是重新生成列表,不改变原列表,所以看情况使用。