'''
【程式5】清單排序sort
題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。
1.程式分析:我們想辦法把最小的數放到x上,先将x與y進行比較,如果x>y則将x與y的值進行交換,
然後再用x與z進行比較,如果x>z則将x與z的值進行交換,這樣能使x最小。
'''
'''
知識點
排序:
原型sort(*, key=None, reverse=None) 該函數會改變清單自身元素的排序
reverse設定反序,預設False
key 指定一個key函數,即隻有一個參數(用于傳入清單元素),傳回排序的鍵值的函數,
該選項預設為None,即排序鍵值為清單元素本身
子產品functools:
用于轉換一個比較函數為一個key 函數,可用于sort這樣的排序函數
該比較函數,接受兩個參數,即比較的兩個元素,小于傳回負數,等于傳回0,大于傳回正數。
'''
#Python3.3.5
import functools
l = []
for i in range(3):
x = int(input('integer:\n'))
l.append(x)
l.sort()
print(l)
l.sort(reverse=True)
print(l)
def cmp(ele):
return ele*ele
def cmp2(ele1,ele2):
if ele1>ele2: return 1
elif ele1==ele2:return 0
else: return -1
k=[1,-4,-3]
k.sort(key=cmp)
print(k)
k.sort(key=functools.cmp_to_key(cmp2))
print(k)