Python3: вычисление среднего ... каждый итог не распознается - PullRequest
0 голосов
/ 30 июня 2019

Я в основном закончил эту программу, за исключением последней части, где она должна отображаться «Средняя оценка:» а затем он должен сложить каждую оценку, затем подсчитать каждую, а затем разделить сумма по количеству. У меня проблема в том, что моя программа берет только последний класс , 70 и делит 70 на сколько фактических оценок , что составляет 3 класса.

Что должна сделать программа:

Оценка по математике - 100

Научный балл 90

Чтение составляет 70

Средний балл 86%

Но вместо этого его поговорка Средний балл составляет 23%

(потому что он делает 70/3 вместо 260/3).

Я знаю, что это должно быть исправлено с помощью цикла, но я, честно говоря, понятия не имею, с чего начать с исправления этого.

Это код, который у меня есть:

gradesFile = open("grades.txt","r")

#Establishes the variables
total = 0
numberOfLines = 0
lines = 0
print('Here are your grades:','\n')

#Creates a loop that will print out each score
#Math score is 100
#Science score is 90
#and so on.
for line in gradesFile:
   numberOfLines += 1

   lines = line.strip()

   total = (gradesFile.readline())

   average = float(total) / (numberOfLines)

   print(lines + ' score is ' + total)

gradesFile.close

print('The average score is', average)

Я супер новичок в этом.

Edit: Файл grades.txt выглядит следующим образом. (1-7 означает каждую строку)

1 Математика

2 100,0

3 Наука

4 90,0

5 Чтение

6 70,0

7

Ответы [ 3 ]

0 голосов
/ 30 июня 2019

Это потому, что вы потребляете каждый класс и помещаете его в одну переменную «итого». Вот почему только последний класс "70" зарегистрирован. Вы должны добавить еще одну переменную с именем sum сразу после итога, чтобы вы добавили и текущую итоговую сумму. Затем вычислите среднее значение, используя сумму.

Как в:

total = int(gradesFile.readline()) # Need to convert string from read to int.

sum += total

среднее = сумма / (число строк)

0 голосов
/ 30 июня 2019

Необходимо сделать два изменения.

1. Измените эту строку для накопления оценок

total += float(gradesFile.readline())

2. Принять вычисление среднего оператора за пределами цикла.

 average = float(total) / (numberOfLines)
0 голосов
/ 30 июня 2019

Просто замените:

total = (gradesFile.readline())

с

total += float(gradesFile.readline())
...