Python 3- Assign grade

后端 未结 2 1598
别跟我提以往
别跟我提以往 2021-01-29 14:00

I am trying to write a program that reads a list of scores and then assigns a letter grade based on the score. Define a function to prompt user to enter valid scores until they

相关标签:
2条回答
  • 2021-01-29 14:40

    In this piece of code, you're not adding the value entered by the user to the list grade; you're re-defining grade so it's no longer a list but instead an integer:

    def getScore():
       grade = []
       while grade != -999:
          grade = int(input("Enter grades (-999 ends): "))
       return grade
    

    This wouldn't fly in strict, type-safe languages but, hey, it's python :)

    To fix it, rename the list (grades would be an intuitive name) and use append() to add the value of grade to it. Then, return grades, not grade to get a list back.

    0 讨论(0)
  • 2021-01-29 14:57

    That's what you're looking for:

    from statistics import mean
    
    def main():
       grades = getScores()
       grade = mean(grades)
       abcGrade = getGrade(grade)
       print(grade, "is an", abcGrade)
    
    
    def getScores():
       grades = []
       while True:
          grade = int(input("Enter grades (-999 ends): "))
          if grade == -999: return grades
          grades.append(grade)
    
    def getGrade(grade):
       best = 100
       if grade >= best - 10:
          return 'A'
       elif grade >=  best - 20:
          return 'B'
       elif grade >= best - 30:
          return 'C'
       elif grade >= best - 40:
          return 'D'
       else:
          return 'F'
    
    main()
    

    I've done as little modifications as I can. You must get all the grades and take the mean. The problem in your code was that it didn't return any value or append() to the list.

    0 讨论(0)
提交回复
热议问题