Как посчитать количество A, B, C, D и F в калькуляторе среднего балла? - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь написать скрипт на Python, который вычисляет среднюю оценку и количество баллов A, B, C, D и F на основе введенного пользователем количества экзаменов и результатов экзаменов.

Я пробовал различные методы для части скрипта, в настоящее время находящейся в функции: "def letter_score (scores):", но не смог успешно присвоить входные оценки экзаменов с соответствующими имбуквы.

    sum_of_scores = 0
    number_of_exams = int(input("What is the size of the class? "))
    print("Now enter the scores below.")
    for i in range(1, number_of_exams + 1):
     scores = int(input("Student %d : " %(i)))
     sum_of_scores += scores

    def letter_score(scores):
      if scores >= 90:
        scores = "A"
      elif scores < 90 and scores >= 80:
        scores = "B"
      elif scores < 80 and scores >= 70:
        scores = "C"
      elif scores < 70 and scores >= 60:
        scores = "D"
      else:
        scores = "F"

    average_score = sum_of_scores/number_of_exams

    print("The average is " + str(average_score))

    print("There are " + str(scores) + " A's.")
    print("There are " + str(scores) + " B's.")
    print("There are " + str(scores) + " C's.")
    print("There are " + str(scores) + " D's.")
    print("There are " + str(scores) + " F's.")

Мне удалось найти среднюю оценку, но буквенные оценки доставляют мне неприятности.

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Рассмотрите возможность использования python dictionary для хранения счетчика букв_скор

. Вы можете инициализировать словарь со всеми 0 с помощью:

letter_score_count = { "A": 0, "B": 0, "C": 0, "D": 0, "F": 0}

Дать возвращаемое значение в функцииletter_score с использованием return ключевого слова

    def letter_score(scores):
        if scores >= 90:
            return "A"
        elif scores < 90 and scores >= 80:
            return "B"
        elif scores < 80 and scores >= 70:
            return "C"
        elif scores < 70 and scores >= 60:
            return "D"
        else:
            return"F"

К тому времени вызовите метод letter_score, используйте результат в качестве ключа словаря для увеличения счетчика каждой буквенной оценки при вводе оценок

letter_score_count[letter_score(scores)] += 1

В конце вы можете распечатать результат

print("There are " + str(letter_score_count["A"]) + " A's.")

Отредактированная версия из вашего кода.Надеюсь, что эта помощь

    sum_of_scores = 0
    number_of_exams = int(input("What is the size of the class? "))
    print("Now enter the scores below.")
    letter_score_count = { "A": 0, "B": 0, "C": 0, "D": 0, "F": 0}
    def letter_score(scores):
        if scores >= 90:
            return "A"
        elif scores < 90 and scores >= 80:
            return "B"
        elif scores < 80 and scores >= 70:
            return "C"
        elif scores < 70 and scores >= 60:
            return "D"
        else:
            return"F"

    for i in range(1, number_of_exams + 1):
        scores = int(input("Student %d : " % (i)))
        sum_of_scores += scores
        letter_score_count[letter_score(scores)] += 1

    average_score = sum_of_scores / number_of_exams

    print("The average is " + str(average_score))

    print("There are " + str(letter_score_count["A"]) + " A's.")
    print("There are " + str(letter_score_count["B"]) + " B's.")
    print("There are " + str(letter_score_count["C"]) + " C's.")
    print("There are " + str(letter_score_count["D"]) + " D's.")
    print("There are " + str(letter_score_count["F"]) + " F's.")
0 голосов
/ 23 сентября 2019

Дайте мне знать, если это поможет.Вам необходимо включить логику подсчета в функцию оценки букв.

from collections import defaultdict

def letter_score(scores,counter_store):
      if scores >= 90:
           scores = "A"
           counter_store["A"]+=1
      elif scores < 90 and scores >= 80:
           scores = "B"
           counter_store["B"]+=1
      elif scores < 80 and scores >= 70:
           scores = "C"
           counter_store["C"]+=1
      elif scores < 70 and scores >= 60:
           scores = "D"
           counter_store["D"]+=1
      else:
           scores = "F"
           counter_store["F"]+=1
      return(counter_store)
sum_of_scores = 0
counter_store=defaultdict(int)
number_of_exams = int(input("What is the size of the class? "))
print("Now enter the scores below.")
for i in range(1, number_of_exams + 1):
     scores = int(input("Student %d : " %(i)))
     score_count=letter_score(scores,counter_store)
     sum_of_scores += scores


average_score = sum_of_scores/number_of_exams
print("The average is " + str(average_score))

print("There are " + str(counter_store["A"]) + " A's.")
print("There are " + str(counter_store["B"]) + " B's.")
print("There are " + str(counter_store["C"]) + " C's.")
print("There are " + str(counter_store["D"]) + " D's.")
print("There are " + str(counter_store["F"]) + " F's.")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...