在Python中的4个数字列表中查找2个中间数字

时间:2015-11-30 20:50:42

标签: python python-2.7

我想编写一个获得4个数字并打印2个中间数字的脚本。

我尝试了一些东西,但效果不好:

a = (input('enter first num:'))
b = (input('enter second num:'))
c = (input('enter thirs num:'))
d = (input('enter forth num:'))

##a=float(a)
##b=float(b)    
##c=float(c)
##d=float(d)

List=[a,b,c,d]
L=[]
for i in List:
        if i >> min(List):
            if i << max(List):
              L.append(i)
print L

我不确定问题是什么,因为输出列表不连贯,实际上取决于输入。

我想得到一个线索或想法如何解决这个问题(仅使用列表,以及 - 如果 - 这是非程序员的基础课程)

3 个答案:

答案 0 :(得分:5)

这应该有效。它在列表中找到最小和最大元素,并将它们从列表中删除,留下中间的两个元素。

a = int(input('enter first num:'))
b = int(input('enter second num:'))
c = int(input('enter thirs num:'))
d = int(input('enter forth num:'))

L = [a, b, c, d]

minimum = a
maximum = d
for i in L:
    if i < minimum:
        minimum = i
    if i > maximum:
        maximum = i
tmp = L[:]
tmp.remove(minimum)
tmp.remove(maximum)
print tmp

注意:这只会删除最小和最大数字,如果列表大小为4,则只会留下两个数字

这是使用sort函数执行此操作的另一种方法,该函数对列表进行排序,然后您可以按索引获取元素。

a = int(input('enter first num:'))
b = int(input('enter second num:'))
c = int(input('enter thirs num:'))
d = int(input('enter forth num:'))

L=[a,b,c,d]

L.sort()
print L[1]
print L[2]

如果您想将它们添加到列表而不是

new_L = [L[1], L[2]]

答案 1 :(得分:0)

首先提示输入所有数字,将每个数字转换为整数,然后对它们进行排序,然后选择中间的两个,如下所示:

middle = sorted(int(input('enter {} num: '.format(p))) for p in ['first', 'second', 'third', 'forth'])[1:-1]
print 'The middle numbers are:', middle

例如,您会看到以下内容:

enter first num: 10
enter second num: 3
enter third num: 8
enter forth num: 5
The middle numbers are: [5, 8]

答案 2 :(得分:-1)

你的if语句表现不如你所期望的那样。

'&GT;&GT;'和'&lt;&lt;&lt;不是比较运营商。它们是bitwise operators

您只想使用'&gt;'和'&lt;'比较价值。