如何使用python 3.x从用户输入中查找第二个最小/最大数字?

问题描述

Python的新手,试图完成一项任务,该任务要求查找用户输入的两个最大和两个最小的数字的和,数字0表示输入已结束,无法弄清楚为什么代码不起作用

b = 0
c = 0
b2 = 0
c2 = 0
for i in range(-30000,30000):
    a = int(input())
    if a == 0:
        break
    elif a > b:
        b = a
    elif a < c:
        c = a
    elif a >= b-1:
        b2 = a
    elif a <= c+1:
        c2 = a
print(b,b2,c,c2)
summ1 = b + b2
summ2 = c + c2
print(summ1,summ2)

b-最大数字,c-最小数字,b2-第二大数字,c2-第二最小数字

输入数字并运行代码后,变量b2和c2始终为0,但是最大和最小数字仍然有效

解决方法

如果值大于b,则不仅需要设置新的b,还可以将旧的b移至b2

    elif a > b:
        b,b2 = a,b
     
    elif a < c:
        c,c2 = a,c

    elif a >= b2:
        b2 = a
    elif a <= c2:
        c2 = a

其余elif条陈述是错误的。该数字必须大于b2或小于c2

,

我看到您正在尝试在这里学习Python,所以让我给您一些有关如何更简单地解决问题的一般提示:

  1. 首先,将所有用户输入收集到Python列表中
  2. 现在,在该列表中找到最大2个和最小2个数字。请记住,python具有max()min()函数。
  3. 进行求和并打印

一个快速的python技巧:您的for i in range(-30000,30000):实际上是一个“永远:”在Python中,我们使用while True:来做到这一点