我的任务是创建一个程序,该程序接收所有输入的数字并将它们加在一起,除了该列表中的最高整数。我想使用while,如果那么逻辑,但我无法弄清楚如何排除最高数字。当字符串"结束"时,我还必须让程序中断。被放入控制台。到目前为止,我有,
total = 0
while 1 >= 1 :
value = input("Enter the next number: ")
if value != "end":
num = float(value)
total += num
if value == 'end':
print("The sum of all values except for the maximum value is: ",total)
return total
break
我根本不知道如何忽略输入的最高数字。提前致谢!我正在使用python 3 fyi。
答案 0 :(得分:2)
这是你想要做的吗?
total = 0
maxValue = None
while True:
value = input("Enter the next number: ")
if value != "end":
num = float(value)
maxValue = num if maxValue and num > maxValue else num
total += num
else:
print("The sum of all values except for the maximum value is: ",total-maxValue )
# return outside a function is SyntaxError
break
答案 1 :(得分:1)
在这里,您要保持与原件的接近。对于这类事情,在python中使用列表非常棒。
list = []
while True:
num = input("Please enter value")
if num == "end":
list.remove(max(list))
return sum(list)
else:
list.append(int(num))
如果您输入1,2和3,则输出3 - 它会添加1和2并丢弃原始3。
您已经说过这是一项任务,所以如果不允许列表,那么您可以使用
max = 0
total = 0
while True:
num = input("Please enter value")
if str(num) == "end":
return total - max
if max < int(num):
max = int(num)
total += int(num)
答案 2 :(得分:0)
实现所需结果的最简单方法是使用python的内置最大函数(即如果你不关心性能,因为这样你实际上是在列表上迭代2次而不是一次)。
a = [1, 2, 3, 4]
sum(a) - max(a)
这与你想要它完全不一样,但结果将是相同的(因为不是不添加最大的项目,你最后可以减去它)。
答案 3 :(得分:0)
这对你有用。
total = 0
highest = None
while True:
value = input("Enter the next number: ")
if value != 'end':
num = float(value)
if highest is None or num > highest:
highest = num
total += num
else:
break
print("The sum of all values except for the maximum value is: ",total-highest )
print(total-highest)