Некорректный вывод при усреднении в python - PullRequest
2 голосов
/ 12 июля 2020

В этом коде python нет ошибки, но вывод неверен. Это код для вычисления средних оценок студента.

english_1 = 22
urdu_1 = 23
maths_1 = 15
science_1 = 18
social_1 = 21

english_2 = 10
urdu_2 = 22
maths_2 = 13
science_2 = 25
social_2 = 11
def average_marks(english, urdu, maths, science, social):
    average = english + urdu + maths + science + social / 5
    print("average marks of student")
    print(average)
result1 = average_marks(english_1, urdu_1, maths_1, science_1, social_1)
result2 = average_marks(english_2, urdu_2, maths_2, science_2, social_2)

это результат

средние оценки студента 82,2 средние оценки студента 72,2

Если вы можете помочь, пожалуйста, я новичок. Спасибо!

Ответы [ 3 ]

7 голосов
/ 12 июля 2020

Вы опускаете скобки при вычислении среднего значения. Вы хотите сначала вычислить сумму, а затем сделать деление:

average = (english + urdu + maths + science + social) / 5

Надеюсь, я был вам чем-нибудь полезен

1 голос
/ 12 июля 2020

Решение

«Порядок работы» показывает, что деление происходит в порядке добавления. Ваша проблема заключается в следующем:

average = english + urdu + maths + science + social / 5

Использование скобок вокруг раздела добавления кода, деление будет удалено после скобок. Примерно так:

average = (english + urdu + maths + science + social) / 5

Дополнительные примечания

Чтобы немного упорядочить ваш код, я бы предложил уменьшить позиционные параметры в функции и вложить ваши результаты в словарь . Вот так:

student_results = {'Student1':{'English':22,'Urdu':23,'Maths':15,'Science':18,'Social':21},
                   'Student2':{'English':10,'Urdu':22,'Maths':13,'Science':25,'Social':11}}

def average_marks(results):
    average = sum(results.values()) / len(results)
    return average

for student, results in student_results.items():
    print("The average results for Student {} is {}".format(student, average_marks(results)))
1 голос
/ 12 июля 2020

Ваш код мне нравится, но одна вещь Попробуйте установить result1 на double или float вместо int, поэтому, когда python записывает результат, он не столкнется с какими-либо ограничениями и добавит круглые скобки вокруг l ie this

(english + math + science) / # of items
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...