функция усреднения чисел от ввода без ограничений - PullRequest
0 голосов
/ 18 января 2019

Я хочу сделать код, который получает число от ввода до тех пор, пока число не станет "-1"(==-1) и затем с этими цифрами, я хочу сделать среднее. Так я кодирую вот так

Я хочу знать, почему мой код выдает ошибку

print("if u wanna quit inputting number, press '-1'")
print("="*60)

a=[]
while input()!=-1:
    a.append(int(input()))

def avrg(*n):
    summ=0
    avrg=0
    for i in n:
        summ+=i
    avrg=summ/len(n)
    return avrg

b=avrg(a)
print(b)

и хотя я ввожу '-1', функция не работает

Ответы [ 2 ]

0 голосов
/ 18 января 2019
print("if u wanna quit inputting number, press '-1'")
print("="*60)

a=[]

while True:
    i = int(input())
    if i==-1:
        break
    else:
        a.append(i)

def avrg(a):
    return sum(a)/len(a)

b=avrg(a)
print(b)

Пользовательский ввод из функции input() всегда имеет тип str, поэтому вам необходимо преобразовать его в int перед сравнением if i==-1. В цикле while он продолжает потреблять пользовательский ввод, пока пользователь не введет -1. Сумма списка может быть просто вычислена встроенной функцией sum.

0 голосов
/ 18 января 2019

Вы, вероятно, не хотите вызывать input как в условном выражении while, так и в цикле while. Что-то вроде этого, вероятно, то, что вы собираетесь:

a = []
num = int(input())
while num != -1:
    a.append(num)
    num = int(input())

Кроме того, ваше усреднение немного сложнее, чем нужно. Попробуйте это:

b = sum(a) / len(a)

Конечно, вы столкнетесь с проблемами, если не введете какие-либо числа для усреднения, то есть деления на 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...