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()是重新生成列表,不改變原列表,所以看情況使用。