我想编写一个获得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
我不确定问题是什么,因为输出列表不连贯,实际上取决于输入。
我想得到一个线索或想法如何解决这个问题(仅使用列表,以及 - 如果 - 这是非程序员的基础课程)
答案 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)