Как сгенерировать средние значения с данными, уже введенными в цикл for? - PullRequest
1 голос
/ 28 апреля 2019

Я не могу понять, как вычислить сумму данных для получения среднего значения после того, как я ввел все данные в цикл for.Я не знаю, что поставить после "protein_sum =", чтобы сделать эту работу.Это для универа.Любые решения?

Я пытался использовать функцию sum(), но возвращает объект ошибки 'int' не повторяется, и я очень запутался.Это на python 3.

for number_of_patients in range(1, number_of_patients + 1)
    protein = int(input("Enter protein(g) requirement for patient: ")

protein_sum = 
avg_protein = protein_sum / number_of_patients
print(avg_protein)

Я ожидаю, что пользователь введет 'n' пациентов и их соответствующие потребности в белке и выдаст среднее требуемое количество белка.

Например.Если было три пациента и пользователь ввел 10, 20 и 15 в качестве количества белка, я ожидаю, что программа вернет 15 как среднее.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2019

Это зависит от формата ввода пользователя. Если пользователь ввел все свойства в новой строке, то этот код будет работать:

proteins=[] 
number_of_patients=int(input("Enter Number of patients: "))
for number_of_patients in range(1, number_of_patients + 1):
    protein=int( input("Enter protein(g) requirement for patient: ") )
    proteins.append(protein)
protein_sum = sum(proteins)
avg_protein = protein_sum / number_of_patients
print(avg_protein)

Иначе, если пользователь ввел весь белок в одну строку, разделенную пробелом, тогда этобудет работать:

number_of_proteins=int(input())
proteins=[int(x) for x in input().split()]
protein_sum=sum(proteins)
avg=protein_sum/number_of_proteins
print(avg)
0 голосов
/ 28 апреля 2019

Вы можете легко решить это. Просто сложите числа с суммой предыдущих значений.

protein_sum = 0
for number_of_patients in range(1, number_of_patients + 1){
    protein = int(input("Enter protein(g) requirement for patient: ")
    protein_sum += protein
}

avg_protein = protein_sum / number_of_patients
print(avg_protein)
...