在while循环中使用+ =但需要排除最高数字

时间:2016-02-12 07:06:16

标签: python python-3.x

我的任务是创建一个程序,该程序接收所有输入的数字并将它们加在一起,除了该列表中的最高整数。我想使用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。

4 个答案:

答案 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)