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

Извинения, первый постер и начинающий пользователь Python.

Задача состоит в следующем: написать программу на Python, которая позволяет пользователю вводить любое количество неотрицательных значений с плавающей точкой. Пользователь завершает список ввода любым отрицательным значением. Затем программа печатает сумму, среднее (среднее арифметическое), максимальное и минимальное из введенных значений. Завершающее отрицательное значение не используется в вычислениях.

Я в значительной степени владею большей частью этого, пробовал несколько разных способов, и, похоже, не могу заставить его правильно рассчитать среднее и сумму. (не может получить без отрицательного числа, чтобы прекратить, или также делает среднее отрицательное, или совпадает со значением суммы)

Я рассматриваю возможность начать заново и использовать вызов функции def.?? Я также начинал получать что-то с помощью операторов try-кроме, но это тоже распалось.

Любой совет в правильном направлении приветствуется!

Первый...

num = []
tot = 0
big = None
small = None

while True:
    numbers = float(input('Enter a positive number, negative to stop: '))
    tot += numbers
    if big is None or numbers > big:
        big = numbers
    if small is None or numbers < small:
        small = numbers
    if numbers < 0:
        break
avg = tot / numbers

print('Sum is:', tot)
print('Average is:',avg)
print('Maximum is:',big)
print('Minimum is:',small)

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

tot = 0
big = None
small = None
count = 0
while True:
length = count + 1

#etc, etc...then trying to do...

avg = tot/length 

#or... 

avg =str(tot/length)

но все еще застрял.

1 ответ

Решение
num = []
tot = 0
small  = None
avg = None
big = None
while True:
    numbers = float(input('Enter a positive number, negative to stop: '))
    if numbers < 0:
        break 
    tot +=numbers
    num.append(numbers)
    if small== None and big == None and avg == None:
        small=numbers; big=numbers; avg = numbers
    else:
        small = min(small, numbers)
        small = max(big, numbers) 


if len(num) > 0:
    avg = tot / len( num)


print('Sum is:', tot)
print('Average is:',avg)
print('Maximum is:',big)
print('Minimum is:',small)

num = []
tot = 0
small  = None
avg = None
big = None
while True:
    numbers = float(input('Enter a positive number, negative to stop: '))
    if numbers < 0:
        break 
    tot +=numbers
    num.append(numbers)

if len(num) > 0:
    avg = tot / len( num)
    big = max(num)
    small = min(num)


print('Sum is:', tot)
print('Average is:',avg)
print('Maximum is:',big)
print('Minimum is:',small)
Другие вопросы по тегам