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()

  

posted @ 2017-12-08 10:41  longphui  Views(242)  Comments(0Edit  收藏  举报