Python While循环:除最大值外的所有数字的总和

Python While循环:除最大值外的所有数字的总和,python,function,loops,while-loop,sum,Python,Function,Loops,While Loop,Sum,嗨,我的问题是,我必须创建一个函数,要求用户输入一系列 大于或等于零的数字,一次一个。用户键入end以指示 没有更多的数字了。该函数计算所有输入值的总和 系列中的最大值除外。(将此视为下降最高点 一系列家庭作业分数中的家庭作业分数。)然后函数都会打印 求和并返回和。您可以假设用户输入是有效的:它们要么是 大于或等于零的数字,或字符串结尾。这里有一些例子说明如何 该函数应表现为: >>> allButMax() Enter next number: 20 Enter next n

嗨,我的问题是,我必须创建一个函数,要求用户输入一系列 大于或等于零的数字,一次一个。用户键入end以指示 没有更多的数字了。该函数计算所有输入值的总和 系列中的最大值除外。(将此视为下降最高点 一系列家庭作业分数中的家庭作业分数。)然后函数都会打印 求和并返回和。您可以假设用户输入是有效的:它们要么是 大于或等于零的数字,或字符串结尾。这里有一些例子说明如何 该函数应表现为:

>>> allButMax()
Enter next number: 20
Enter next number: 30
Enter next number: 40
Enter next number: end
The sum of all values except for the maximum value is: 50.0
50.0
>>> allButMax()
Enter next number: 1.55
Enter next number: 90
Enter next number: 8.45
Enter next number: 2
Enter next number: end
The sum of all values except for the maximum value is: 12.0
12.0
>>> x = allButMax()
Enter next number: 3
Enter next number: 2
Enter next number: 1
Enter next number: end
The sum of all values except for the maximum value is: 3.0
>>> print(x)
3.0
>>> allButMax()
Enter next number: end
The sum of all values except for the maximum value is: 0
0
有人能帮我吗??到目前为止,我有这个(这也必须是一个while循环)


我不知道的是,除了最大值之外,我不知道如何添加每个值。函数如何知道哪个值是最大值?我还需要使用另一个while循环来添加所有的数字吗?

我写下了这个问题的答案,但从前面的答案中看到,我不打算这么做。没错,你确实需要做家庭作业,自己解决这个问题,但这里有几点建议:

  • 您的函数在while循环内运行,但您可以跟踪while循环外的变量,您的“max_number”可以在每次循环时重新分配一个不同的值:

    
    def allButMax():
        max_number = 0
        while True:
            print "running while loop"
            break
    
  • 您不需要使用列表,输出数字只是所有数字加起来减去最大数字

    
    return total_numbers - max_numer
    
  • 您的函数需要返回一个值,因此请使用“return”关键字

  • 最后,您可能希望查找“try”和“except”关键字来评估用户的输入。用户是否给了您一个数字或字符串

    
    try:
        int(user_input)
    except ValueError:
        #user input is a string
    
  • 希望这对你有所帮助,但不要让你付出太多:)


    祝你一切顺利

    那么?你有什么问题?那代码根本就不接近。请自己做作业。如有必要,请阅读教学材料(必要)。您能将值存储在临时缓冲区中吗?如果您不能使用临时缓冲区,只需将所有值相加并跟踪最大值,当结束时,只需减去最大值。
    if number>maximum:maximum=number
    lol我就是这么做的,并且说它的格式不正确。@TheSoyman 101完全没有。你给出了密码,没有解释。Nick给出了一些代码(不是完整的解决方案)并给出了解释。在发布答案时,问问自己这个答案是否以及如何对未来的访问者有所帮助是很有帮助的。如果您无法回答,请不要发布该答案;)因此,我有三倍的能力将
    “end”
    输入到
    输入下一个数字:
    行中。有没有办法将字符串转换为浮点值???您可以使用“try”和“except ValueError”来告诉您用户是否给了您字符串。一旦您知道它是一个字符串(即执行ValueError除外),那么您就可以在知道它是一个字符串的情况下对输入进行求值(即如果input=“end”,则执行您想要执行的操作,否则如果它是一个非“end”的字符串,则bn是无效输入,您可以再次运行循环)。
    
    try:
        int(user_input)
    except ValueError:
        #user input is a string