我必须只使用min()和max()函数对数字进行排序

时间:2016-03-18 03:09:00

标签: python python-3.x

我有一些功课,我需要使用min()和max()函数对数字进行排序,并使用它来查找中间数字。我有一组4个整数。如何使用此代码并使用它来查找中间数字而不使用其他方法。

first_integer = input("Please enter the first integer: ")
second_integer = input("Please enter the second integer: ")
third_integer = input("Please enter the third integer: ")
fourth_integer = input("Please enter the fourth integer: ")

integer1 = int(first_integer)
integer2 = int(second_integer)
integer3 = int(third_integer)
integer4 = int(fourth_integer)

integers = (integer1, integer2, integer3, integer4)

min_number = min (integers)
max_number = max (integers)
mid_number_max = min (max(integers),max(integers),max(integers))
mid_number_low = max (min(integers),min(integers),min(integers))

当我尝试使用数字1,2,3,4执行此操作时 我得到了

1 1 4 4

我怎样才能获得

1 2 3 4

提示是我必须删除最低和最高的数字,并找到其余数字的最小值和最大值。

4 个答案:

答案 0 :(得分:4)

我明白了。

在我看了一个有人给我的例子后,我能够解决它。

first_integer = input("Please enter the first integer: ")
second_integer = input("Please enter the second integer: ")
third_integer = input("Please enter the third integer: ")
fourth_integer = input("Please enter the fourth integer: ")

integer1 = int(first_integer)
integer2 = int(second_integer)
integer3 = int(third_integer)
integer4 = int(fourth_integer)


min_number = min(integer1, integer2, integer3, integer4)
max_number = max(integer1, integer2, integer3, integer4)
mid_number_min = min(max(integer1, integer2), max(integer2, integer3),
                     max(integer3, integer4), max(integer1, integer3),
                     max(integer1, integer4), max(integer2, integer4))
mid_number_max = max(min(integer1, integer2), min(integer2, integer3),
                     min(integer3, integer4), min(integer1, integer3),
                     min(integer1, integer4), min(integer2, integer4))

print (min_number, mid_number_min, mid_number_max, max_number)

结果:

1 2 3 4

感谢无论是谁试图帮助我。

编辑:感谢@AChampion指出我错过了一个组合(1,4)。

答案 1 :(得分:3)

不确定您是如何通过元组中的min max从元组中取出中间数字的。您需要检查每个整数组合:

>>> import itertools as it
>>> integers = 4, 3, 2, 1
>>> (min(integers),
... min(*(max(a, b) for a, b in it.combinations(integers, 2)))
... max(*(min(a, b) for a, b in it.combinations(integers, 2)))
... max(integers)
(1, 2, 3, 4)

答案 2 :(得分:2)

如果您使用list代替tuple,则可以执行以下操作:

integers = [integer1, integer2, integer3, integer4]

min_number = min(integers)
max_number = max(integers)
# Now remove the already found numbers
integers.remove(min_number)
integers.remove(max_number)
mid_number_max = max(integers)
mid_number_min = min(integers)

答案 3 :(得分:1)

要找出max_numbermid_number_max,我们首先要找出左边3个元素(max_left)的最大值和右边3个元素的最大值({{ 1}})。然后比较max_rightmax_left。如果它们不相等,则表示其中一个是max_right,另一个是max_number。如果它们相等,则表示mid_number_max位于max_numberintegers[1]。因此integers[2]值应为mid_number_maxmin(integers[1], integers[2])。所以,只需选择较大的max(integers[0], integers[3])即可。同样的想法是找出mid_number_maxmin_number

mid_number_low