Python: hoe voeg ik een “Final Grade”-converter toe aan mijn beoordelingssysteemcalculator

Ik heb een idee wat ik moet doen, maar ik kom er niet uit. Het programma moet de naam van de student en drie testscores kunnen krijgen, en vervolgens de gemiddelde score (percentage) van de drie scores. Daarna moet je de score (percentage) omzetten in een cijfer.

BEWERKEN:
Hoe verwijder ik de spatie in het midden van het cijfer en het “%”?

  • Druk op “Enter” om te beginnen
  • Vul je naam in: Jordan Simpson
  • Eerste testscore: 67%
  • Tweede testscore: 78%
  • Derde testscore: 89%
  • Eindlettercijfer: C+
  • Jordan Simpson-testscore is: 78,0 %
  • Wilt u het programma opnieuw starten?

Gradeschaal:


input ('Please press "Enter" to begin')
while True:
    import math
    studentName = str(input('Enter your Name: '))
    firstScore = int(float(input('First test score: ').replace('%', '')))
    secondScore = int(float(input('Second test score: ').replace('%', '')))
    thirdScore = int(float(input('Third test score: ').replace('%', '')))
    scoreAvg = (firstScore + secondScore + thirdScore) / 3
    def grade():
        if scoreAvg >= 93 and <= 100:
            return 'A'
        if scoreAvg <= 92.9 and >= 89:
            return 'A-'
        if scoreAvg <= 88.9 and >= 87:
            return 'B+'
        if scoreAvg <= 86.9 and >= 83:
            return 'B'
        if scoreAvg <= 82.9 and >= 79:
            return 'B-'
        if scoreAvg <= 78.9 and >= 77:
            return 'C+'
        if scoreAvg <= 76.9 and >= 73:
            return 'C'
        if scoreAvg <= 72.9 and >= 69:
            return 'C-'
        if scoreAvg <= 68.9 and >= 67:
            return 'D+'
        if scoreAvg <= 66.9 and >= 60:
            return 'D'
        return 'F'
    print(grade(scoreAvg))
    print(studentName, "test score is: ",scoreAvg,'%')
    endProgram = input ('Do you want to restart the program?')
    if endProgram in ('no', 'No', 'NO', 'false', 'False', 'FALSE'):
        break

Antwoord 1, autoriteit 100%

Ik weet niet precies wat uw vraag is, maar hier is een beknoptere manier om het cijfer voor de letter te krijgen.

>>> scores = [93, 89, 87, 83, 79, 77, 73, 69, 67, 60, 0]
>>> grades = ['A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D', 'F']
>>> 
>>> def gradeFor(s):
...     grade_scores = zip(scores, grades)
...     for score, grade in grade_scores:
...        if s >= score:
...            return grade
>>> gradeFor(87)
B+
>>> gradeFor(89)
A-
>>> gradeFor(88)
B+
>>> gradeFor(67)
D+
>>> gradeFor(72)
C-
>>> gradeFor(40)
F

U kunt ook doen

if endProgram.lower() in ('no', 'false'):

Other episodes