问题描述
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,所以让我给您一些有关如何更简单地解决问题的一般提示:
- 首先,将所有用户输入收集到Python列表中
- 现在,在该列表中找到最大2个和最小2个数字。请记住,python具有
max()
和min()
函数。 - 进行求和并打印
一个快速的python技巧:您的for i in range(-30000,30000):
实际上是一个“永远:”在Python中,我们使用while True:
来做到这一点