【问题标题】:How do I get the minimum and maximum without using min and max functions?如何在不使用 min 和 max 函数的情况下获得最小值和最大值?
【发布时间】:2020-03-31 21:22:23
【问题描述】:

我试图在不使用 min 和 max 函数的情况下找到最大值和最小值。但最大值只显示第一个数字。有什么帮助吗?

我的代码:

count = 0
total = 0.0

num = float(input("Enter the number: ")) 
maximum = num
minimum = num

while num = 0:
    count = count + 1
    total = total + num
    num = float(input("Enter the number: "))

if num < minimum:
    minimum = num
else:
    num > maximum
    maximum = num

if count == 0:
    print("Invalid Entry.")
else:
    print("Average Number:", round(total/count, 1))
    print("Minimum Number:", minimum)
    print("Maximum Number:", maximum)

【问题讨论】:

  • 我猜条件是while num != 0:?另一方面,您应该在while 循环内进行比较。另外,仔细看看else:,应该是elif num &gt; maximum:
  • 这段代码 sn-p 可能不起作用。无论如何,我建议使用调试器来查看代码引导您的位置。例如,我的猜测是你的意思是缩进if num &lt; minimum 行,调试器会显示你在循环中没有到达它。

标签: python


【解决方案1】:

您没有打算使用 if 条件,这就是它不起作用的原因
我已经修改了获取6个数字的代码,一个接一个尝试这个

count = 0
total = 0.0

num = float(input("Enter the number: ")) 
maximum = num
minimum = num

while count < 5:
    count = count + 1
    total = total + num
    num = float(input("Enter the number: "))

    if num < minimum:
       minimum = num
    else:
       num > maximum
       maximum = num

if count == 0:
    print("Invalid Entry.")
else:
    print("Average Number:", round(total/count, 1))
    print("Minimum Number:", minimum)
    print("Maximum Number:", maximum)

【讨论】:

    【解决方案2】:
    count = 0
    total = 0.0
    
    num = None 
    maximum = -float("inf")
    minimum = float("inf")
    # No need to do the 1st round outside the loop
    while num != 0:
        num = float(input("Enter the number: "))
        count += 1
        total += num  # += is more concise
    
        # This block needs to be in the while loop
        if num < minimum:
            minimum = num
        if num > maximum:  # elif is fine if you initialize minimum and maximumwith the 1st value of num
            maximum = num
    
    if count == 0:
        print("Invalid Entry.")
    else:
        print("Average Number:", round(total/count, 1))
        print("Minimum Number:", minimum)
        print("Maximum Number:", maximum)
    

    【讨论】:

      【解决方案3】:

      我不太确定您要在这里完成什么。如果您的第一个输入不是 0,则将变量最大值和最小值设置为该非零数字。您将跳过 while 循环和 if 语句。如果您没有收到错误,它可能只会吐出最大值和最小值是相同的数字。你能提供更多关于你想要做什么的细节吗?

      【讨论】:

        【解决方案4】:

        您需要检查每个数字的最小值和最大值。所以这部分必须在while循环中:

        if num < minimum:
          minimum = num
        
        if num > maximum
          maximum = num
        

        虽然条件似乎不正确。您每次都将 0 分配给 num 。你的意思可能是 num!=0。在这种情况下,当用户输入 0 时程序终止。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-02-15
          • 1970-01-01
          • 2019-03-28
          • 2021-02-12
          • 2020-03-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多