【问题标题】:Calculate Maximun, Minimun, Average of n numbers计算 n 个数字的最大值、最小值、平均值
【发布时间】:2021-01-25 13:57:20
【问题描述】:

问题是编写一个程序,要求用户输入一系列数字并输出,系列中的最大数字,系列中的最小数字,以及所有正数的平均值。

我已经计算了最小值和最大值的当前代码,但我不知道如何编写代码使其计算平均值。

maximum = None
minimum = None
num = None

while True:
     inp = input("PLease enter a number: ")
     if inp == "#" : 
     break
     try:
    num=float(inp)
    except:
    print ("Error with this input")
    continue

    if maximum is None:
    maximum = num
    minimum = num

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

print ("The Maximum is ", maximum)
print ("The Minimum is ", minimum)

【问题讨论】:

  • 看起来您的代码格式不正确。尽可能尝试使用库函数。在您的情况下,请使用 max()min()sum()

标签: python max average min


【解决方案1】:

您将所有输入的数字存储在一个列表中并从那里计算:

def avg_pos(d):
    if len(d) == 0: # avoid div by 0
        return 0
    return sum(d)/len(d)

data = []
while True:
    try: 
        n = input("Number: ")
        if n == "#": 
            break
        n = int(n)
        data.append(n)
    except ValueError:
        print("Not a number")

print( f"Min: {min(data)}  Max: {max(data)}  AvgP: {avg_pos([d for d in data if d>0])}" )

输出:

Number: 4
Number: 5
Number: 6
Number: -2
Number: -99
Number: 73
Number: #
Min: -99  Max: 73  AvgP: 22.0 

【讨论】:

  • 如果用户输入了错误的输入,错误的输入仍然会被附加。例如“test”,稍后在d &gt;0 进行比较时会引发错误。在异常打印后添加continue 可以防止这种情况发生。
  • @ggordon 我的错,已修复。在 try 中移动了 append: - 不需要继续
【解决方案2】:

您需要添加一个counter 变量以了解您在循环中获得了多少轮。 您还需要一个total 变量来汇总所有num

那么你只需要打印总数/计数器

【讨论】:

  • 这可能只是一个简单的评论
【解决方案3】:

每次接受一个正数时求和并计算每个数字。最后你可以确定平均值


maximum = None
minimum = None
sum_of_positive = 0
count_of_positive = 0
num = None

while True:
    inp = input("PLease enter a number: ")
    if inp == "#" : 
        break
    try:
        num=float(inp)
    except:
        print ("Error with this input")
        continue

    if maximum is None:
        maximum = num
        minimum = num

    if num>maximum: 
        maximum=num
    if num<minimum: 
        minimum=num
    
    if num > 0:
        sum_of_positive = sum_of_positive + num
        count_of_positive = count_of_positive + 1

if count_of_positive > 0:
    average_of_positive = sum_of_positive / count_of_positive
else:
    average_of_positive = 0

print ("The Maximum is ", maximum)
print ("The Minimum is ", minimum)
print ("The Average of Positive Numbers is ", average_of_positive)

【讨论】:

    【解决方案4】:

    使用maxminsum 等库函数。

    例如,max([1,2,3,5,11,8]) 给你 11,min([1,2,3,5,11,8]) 给你 1,sum([1,2,3,5,11,8]) 给你 30。

    假设您将数字读入名为numbers 的列表中,然后得到最大数字为max(numbers),最小数字为min(numbers),平均值为sum(numbers)/len(numbers)

    请注意,如果你使用python 2,那么你需要在除法之前转换为浮点数,比如float(sum(numbers))/len(numbers)

    【讨论】:

      猜你喜欢
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多