问题描述
我必须编写一个程序来计算并显示te用户输入的最高和第二最高值。 该程序还必须使用输入的零或一值。
以下是一些示例运行:
enter a value or 'stop' -3.2
enter a value or 'stop' -5.6
enter a value or 'stop' 0.5
enter a value or 'stop' 0.3
enter a value or 'stop' stop
the highest value = 0.5
the second highest value = 0.3
和
enter a value or 'stop' stop
the highest value could not be calculated
the second highest value could not be calculated
所以我得到了一个代码,但是它只给了我最小和最大。 到目前为止,我所得到的是:
minimum = None
maximum = None
a = int(input("Enter a value or 'stop': "))
while True:
a = input("Enter a value or stop: ")
if a == 'stop':
break
try:
number = int(a)
except:
print("Invalid input")
continue
if minimum is None or number < minimum:
minimum = number
if maximum is None or number > maximum:
maximum = number
print('Maximum= ', maximum)
print('Minimum= ', minimum)
如果有人可以帮助我,那就太好了!
1楼
value_list = list()
while True:
a = input("Enter a value or stop: ")
if a == 'stop':
break
else:
try:
value_list.append(float(a))
except:
print("Invalid input")
continue
sorted_list = sorted(value_list)
if len(sorted_list) > 0:
print('the highest value = ', sorted_list[-1])
else:
print('the highest value could not be calculated')
if len(sorted_list) > 1:
print('the second highest value = ', sorted_list[-2])
else:
print('the second highest value could not be calculated')
这应该工作。 您可能要处理float / int方案
因此,代码实际上使用Python列表以float形式存储输入值。 一旦用户进入停止位置,我们将按升序对列表中的值进行排序,最后仅显示前两个值,即索引-1和-2。 请享用!
2楼
正如@rkta所说,您不需要第3行(因为程序在启动时会询问相同的问题两次)。
您只需要稍微更改代码即可获得所需的程序。 而不是使用此块:
if minimum is None or number < minimum:
minimum = number
if maximum is None or number > maximum:
maximum = number
使用此块:
if highest is None or number > highest:
highest = number
elif second_highest is None or number > second_highest:
second_highest = number
显然,您需要在程序开始时将highest和second_highest设置为None,然后在末尾更改打印语句。
3楼
我加两分钱:
# declare a list
inputs = []
while True:
a = input("Enter a value or stop: ")
if a == 'stop':
break
try:
# check if input is float or integer
if isinstance(a, int) or isinstance(a, float):
# append number to the list
inputs.append(a)
except:
print("Invalid input")
continue
# sort list
inputs = sorted(inputs)
# print result if list has at least two values
if len(inputs) >= 2:
# cut the list to the last two items
maxs = inputs[-2:]
print 'Max 1 = ', maxs[1]
print 'Max 2 =', maxs[0]
else:
print 'not enough numbers'