Python: преобразовать буквенную оценку в соответствующее целочисленное значение - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь устранить ошибки в этом коде.

Предполагается, что программа будет обрабатывать столько учеников, сколько указано пользователем, в классе. Получите письмо оценки: A, B, C, D, F для каждого студента. Наконец он рассчитает и отобразит средний класс.

Мой код пока:

students = int(input('How many students: '))
total_sum = 0
for n in range(students):
    Letter = input('Enter grades: ')
    Letter_int = Letter
if Letter == "A":
    Letter_int == int(80)
elif Letter == "B":
    Letter_int == int(70)
elif Letter == "C":
    Letter_int == int(60)
elif Letter == "D":
    Letter_int == int(50)
elif Letter == "F":
    Letter_int == int(40)
    total_sum += Letter_int
avg = total_sum/students
print('Average of this/these', students, 'student(s) is:', avg)

Код не добавляет целое значение буквенных оценок, сумма всегда возвращается как 0 или TypeError: неподдерживаемый тип (ы) операнда для+ =: 'int' и 'str'. Я новичок в питоне, и я мог бы использовать некоторую помощь.

1 Ответ

0 голосов
/ 09 октября 2019

Вот ваш код, улучшенный и сделанный работой. Используйте его, но, пожалуйста, прочтите комментарии, которые я предоставил, и проанализируйте, какие части я изменил. Также было бы хорошо пересмотреть документацию по Python, как уже упоминалось. Особенно отступы и их значение в Python.

students = int(input('How many students: '))
total_sum = 0
for n in range(students):
    Letter = input('Enter grades: ')
    Letter_int = 0 # here you better initialize with integer not string
    if Letter == "A": # this condition needs to be indented - you want it to be executed
                      # in every iteration of for loop
        Letter_int = 80 # the assignment in Python is done by "=" not "==" (that would be comparison) 
    elif Letter == "B": 
        Letter_int = 70 # you do not need to do int(70), 70 is already an integer
    elif Letter == "C":
        Letter_int = 60
    elif Letter == "D":
        Letter_int = 50
    elif Letter == "F":
        Letter_int = 40
    total_sum += Letter_int # this cannot happen inside elif clause - this way it would only be
                            # executed when F grade is provided
    avg = total_sum/students
    print('Average of this/these', students, 'student(s) is:', avg)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...