Вычислить максимальное, минимальное, среднее из n чисел

#python #max #average #min

#python #максимальное #среднее #минимум

Вопрос:

Вопрос в том, чтобы написать программу, которая просит пользователя ввести ряд чисел и вывести максимальное число в ряду, минимальное число в ряду и среднее значение всех ПОЛОЖИТЕЛЬНЫХ чисел.

Текущий код, который у меня есть, вычисляет минимальное и максимальное значения, но я не знаю, как написать код, чтобы заставить его вычислять среднее значение.

 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)
  

Комментарии:

1. Похоже, ваш код отформатирован неправильно. Также попробуйте использовать библиотечные функции, когда это возможно. В вашем случае используйте max() , min() и sum()

Ответ №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 
  

Комментарии:

1. Если пользователь вводит неверный ввод, неверный ввод все равно добавляется. Например, «test», и это позже выдает ошибку при сравнении d >0 . Добавление continue после печати в исключение предотвратило бы это.

2. @ggordon Мой плохой, исправлен. переместил добавление внутри попытки: — нет необходимости продолжать

Ответ №2:

Находите сумму каждый раз, когда принимается положительное число, и подсчитывайте каждое число. В конце вы можете определить среднее

 
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)
  

Ответ №3:

Вам нужно добавить counter переменную, чтобы узнать, сколько раундов вы получили в цикле. А также вам нужна total переменная для суммирования всех num

Затем вам просто нужно распечатать total / counter

Комментарии:

1. Это могло быть просто простым комментарием

Ответ №4:

Используйте библиотечные функции, такие как max , min и sum .

Например 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 перед разделением, вот так float(sum(numbers))/len(numbers) .