python学习——练习题(5)
""" 题目:输入三个整数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 a def 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()