標籤:sort sdi 函數 [1] 規則 冒泡 eve one 就是
"""題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。"""def inputInt(i): """ 輸入並判斷輸入的是否是整數,不是則重新輸入,是則返回輸入的整數 :param i: :return: """ while True: a = input("整數%d:" % i) if a.isdigit(): a = int(a) break else: print("輸入錯誤,請重新輸入") return adef sort1(arr): """ 利用數組排序輸出 :param arr: :return: """ print("輸出一", end=":") arr.sort() print(arr)def sort2(arr): """ 直接一個一個的比較 :param arr: :return: """ print("輸出二", end=":") a = arr[0] if a > arr[1]: b = a a = arr[1] else: b = arr[1] if a > arr[2]: c = a else: c = arr[2] print(a, end=",") if b > c: print(c, end=",") print(b) else: print(b, end=",") print(c)def sort3(arr): """ 利用sorted函數,排序字典的方式計算,這個函數用的很不習慣 sorted(d, key=d.get)的結果居然是d的key列表 sorted(...) sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list 可以看到其中第一個參數是可迭代對象,後面的參數都是具有預設值的,重點闡述如下: 1、cmp,比較的函數,這個具有兩個參數,參數的值都是從可迭代對象中取出,此函數必須遵守的規則為,大於則返回1,小於則返回-1,等於則返回0 2、key,主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自於可迭代對象中,指定可迭代對象中的一個元素來進行排序 3、reverse,是否反轉,預設情況下不反轉 :param arr: :return: """ print("輸出三", end=":") d = {1: arr[0], 2: arr[1], 3: arr[2]} for w in sorted(d, key=d.get): print(d[w], end=",")def sort4(arr): """ 自己寫個冒泡排序,好久沒寫了 :param arr: :return: """ print("\n輸出四", end=":") for i in range(0, len(arr)): for j in range(i + 1, len(arr)): if arr[i] > arr[j]: a = arr[i] arr[i] = a[j] a[j] = a print(arr)def sort5(arr): """ 利用一個變數多個賦值來計算 :param arr: :return: """ print("輸出五", end=":") if arr[0] > arr[1]: arr[0], arr[1] = arr[1], arr[0] if arr[0] > arr[2]: arr[0], arr[2] = arr[2], arr[0] if arr[1] > arr[2]: arr[1], arr[2] = arr[2], arr[1] print(arr) def sort6(arr): """ 利用min函數來輸 :param arr: :return: """ print("輸出六", end=":") while len(arr) > 0: a = min(arr) arr.remove(a) if len(arr) == 0: print(a) else: print(a, end=",")def answer(): """ 先判斷輸入的是否是整數,然後再排序輸出 :return: """ arr = [] for i in range(1, 4): arr.append(inputInt(i)) sort1(arr) sort2(arr) sort3(arr) sort4(arr) sort5(arr) sort6(arr)answer()
python學習——練習題(5)