如何仅使用min()和max()对4个整数进行排序?蟒蛇

时间:2016-03-17 04:34:50

标签: python-3.x

我正在尝试使用python中的min()和max()函数将用户输入的4个整数排序为数字顺序。我可以很容易地获得最高和最低的数字,但无法计算两个中间数字的组合?有没有人有想法?

4 个答案:

答案 0 :(得分:1)

所以我猜你的输入是这样的?

string = input('Type your numbers, separated by a space')

然后我会这样做:

numbers = [int(i) for i in string.strip().split(' ')]
amount_of_numbers = len(numbers)
sorted = []
for i in range(amount_of_numbers):
    x = max(numbers)
    numbers.remove(x)
    sorted.append(x)
print(sorted)

这将使用max对它们进行排序,但也可以使用min。

如果你没有使用min和max

string = input('Type your numbers, separated by a space')
numbers = [int(i) for i in string.strip().split(' ')]
numbers.sort()     #an optional reverse argument possible
print(numbers)

答案 1 :(得分:0)

LITERALLY只是最小和最大?奇怪,但是,为什么不呢。我即将崩溃,但我认为以下内容可行:

# Easy
arr[0] = max(a,b,c,d)

# Take the smallest element from each pair. 
#
# You will never take the largest element from the set, but since one of the
# pairs will be (largest, second_largest) you will at some point take the
# second largest.   Take the maximum value of the selected items - which
# will be the maximum of the items ignoring the largest value.
arr[1] = max(min(a,b)
    min(a,c)
    min(a,d)
    min(b,c)
    min(b,d)
    min(c,d))

# Similar logic, but reversed, to take the smallest of the largest of each
# pair - again omitting the smallest number, then taking the smallest.
arr[2] = min(max(a,b)
    max(a,c)
    max(a,d)
    max(b,c)
    max(b,d)
    max(c,d))

# Easy
arr[3] = min(a,b,c,d)

答案 2 :(得分:0)

对于Tankerbuzz的结果如下:

first_integer = 9
second_integer = 19
third_integer = 1
fourth_integer = 15

我得到1,15,9,19作为提升值。

以下是提供升序值的符号形式的形式之一(使用i1-i4而不是first_integer等等):

Min(i1, i2, i3, i4)
Max(Min(i4, Max(Min(i1, i2), Min(i3, Max(i1, i2))), Max(i1, i2, i3)), Min(i1, i2, i3, Max(i1, i2)))
Max(Min(i1, i2), Min(i3, Max(i1, i2)), Min(i4, Max(i1, i2, i3)))
Max(i1, i2, i3, i4)

它是由一个'冒泡排序'使用SymPy的最小和最大函数(python CAS):

def minmaxsort(v):
    """return a sorted list of the elements in v using the
    Min and Max functions.

    Examples
    ========

    >>> minmaxsort(3, 2, 1)
    [1, 2, 3]
    >>> minmaxsort(1, x, y)
    [Min(1, x, y), Max(Min(1, x), Min(y, Max(1, x))), Max(1, x, y)]
    >>> minmaxsort(1, y, x)
    [Min(1, x, y), Max(Min(1, y), Min(x, Max(1, y))), Max(1, x, y)]
    """
    from sympy import Min, Max
    v = list(v)
    v0 = Min(*v)
    for j in range(len(v)):
        for i in range(len(v) - j - 1):
            w = v[i:i + 2]
            v[i:i + 2] = [Min(*w), Max(*w)]
    v[0] = v0
    return v

答案 3 :(得分:-1)

我已经解决了。

min_integer = min(first_integer, second_integer, third_integer, fourth_integer)
mid_low_integer = min(max(first_integer, second_integer), max(third_integer, fourth_integer))
mid_high_integer = max(min(first_integer, second_integer), min(third_integer, fourth_integer))
max_integer = max(first_integer, second_integer, third_integer, fourth_integer)