我有一些功课,我需要使用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
提示是我必须删除最低和最高的数字,并找到其余数字的最小值和最大值。
答案 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_number
和mid_number_max
,我们首先要找出左边3个元素(max_left
)的最大值和右边3个元素的最大值({{ 1}})。然后比较max_right
和max_left
。如果它们不相等,则表示其中一个是max_right
,另一个是max_number
。如果它们相等,则表示mid_number_max
位于max_number
或integers[1]
。因此integers[2]
值应为mid_number_max
或min(integers[1], integers[2])
。所以,只需选择较大的max(integers[0], integers[3])
即可。同样的想法是找出mid_number_max
和min_number
。
mid_number_low