我需要使用嵌套循环对从最低到最高的3个数字进行排序。蟒蛇

时间:2018-10-17 19:44:06

标签: python

我为Python中的函数分配了一个函数,使用函数中的参数并给函数3个数字,从最低到最高排序。有时它起作用,有时却不起作用,而且我无法为之困惑。对此的任何启示都会对我有所帮助。谢谢。我应该能够更改Max(a,b,c)以运行任何数字并产生(1,2,3)。

def Max(a,b,c):
    while a < b:
        if b < c:
            print(a,b,c)
            return
        else:
            print(a,c,b)
            return
    while b < c:
        if c < a:
            print(b,a,c)
            return
        else:
            print(b,c,a)
            return
    while c < a:
        if a < b:
             print(c,a,b)
             return
        else:
             print(c,b,a)
             return

Max(3,1,2)

2 个答案:

答案 0 :(得分:1)

def Max(a,b,c):
    return sorted([a,b,c])[-1]

两行,没有任何循环。任何比这短的都不是功能。

return max([a,b,c])也可以,但是我知道您出于某些原因希望对数字进行排序

编辑:您的函数称为Max,但是在重新阅读您的帖子后,您似乎不希望仅返回最大值,而是全部以升序排序。如果是这种情况,请从上面的代码的第二行中删除[-1],并更改函数名称以避免混淆。

更好的是,不要创建执行要由python开发人员完成的功能的函数。只需在主代码中的元素列表上使用sorted():这是执行此操作的pythonic方法。

答案 1 :(得分:0)

您可以链接比较运算符,因此您可以独立检查每个配置:

def Max(a, b, c):
    if a <= b <= c:
        print(a, b, c)
    elif a <= c < = b:
        print(a, c, b)
    elif b <= c < = a:
        print(b, c, a)
    elif b <= a < = c:
        print(b, c, a)
    elif c <= a < = b:
        print(c, a, b)
    else:
        print(c, b, a)