#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)
.