【问题标题】:Python While Loop: sum of all numbers but the greatestPython While循环:所有数字的总和,但最大的
【发布时间】:2017-03-13 02:59:49
【问题描述】:

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

>>> 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循环)

def allButMax():
    while True:
        number=float(input("Enter next number: "))
        if number="end":
            break
    "end"=0

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

【问题讨论】:

  • 所以?你有什么问题?
  • 该代码甚至不接近。请做好自己的功课。必要时阅读指导材料(有必要)。
  • 你能在临时缓冲区中存储值吗?
  • 如果您不能使用临时缓冲区,只需将所有值相加并跟踪最大值,最后减去最大值即可。
  • if number > maximum: maximum = number

标签: python function loops while-loop sum


【解决方案1】:

我为此写了答案,但从之前的答案中看到我不打算这样做。确实,您确实需要做功课并自己解决,但这里有一些建议:

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

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

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

  4. 最后,您可能需要查找“try”和“except”关键字来评估用户的输入。用户给你的是数字还是字符串?

    
    try:
        int(user_input)
    except ValueError:
        #user input is a string
    

希望这有助于不要放弃太多:)

一切顺利!

【讨论】:

  • 大声笑,我就是这样做的,但说它的格式不正确。
  • @thesonyman101 一点也不。你给了代码,没有解释。尼克给出了一些代码(不是完整的解决方案)并给出了解释。在发布答案以询问自己此答案是否以及如何对未来的访问者有所帮助时会有所帮助。如果您无法回答,请不要发布该答案;)
  • 所以我可以将"end" 输入到Enter next number: 行中。有没有办法将字符串转换为浮点数???
  • 你可以使用“try”和“except ValueError”来告诉你用户是否给了你一个字符串。一旦你知道它是一个字符串(即除了 ValueError 被执行),那么你可以评估输入知道它是一个字符串(即如果 input = "end" 然后做你想做的事,否则如果它是一个字符串而不是 " end" thebn 那是无效的输入,你可以再次运行循环)。
猜你喜欢
  • 2020-10-19
  • 2020-03-19
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
相关资源
最近更新 更多