'Why is the average not calculating correctly, and why does the average letter grade remain F no matter the number?

This is my code for the program that calculates 5 user inputs of test scores, displays the letter grade, and then calculates the average score and letter grade. However, the grade comes back as the wrong average, and the letter grade stays F no matter the number.

    import os

    #constants
    PROG_ID = "\nFilename: Average_Grade.py\n"\
              "Homework: 09\n"\
              "Source Code Author: \n"\
              "Reference: Chapter 5\n"\
              "Date: 9 April 2022\n"

    USER_PROMPT = "Please enter a test score. "
    GRADE_TAG = "The letter grade is "
    OUTPUT_TAG = "The average grade is "
      
    #display program id
    def progId ():
        print(PROG_ID)
        print()

    #prompt user
    def getInput(testScore, gradeList):
        for item in range (5):
            testScore = int(input(USER_PROMPT))
            gradeList.append(testScore)
            determineGrade(testScore)
            print()

    #letter grade
    def determineGrade(testScore):
        if testScore >= 90: print (GRADE_TAG, "A")
        elif testScore >= 80: print (GRADE_TAG, "B")
        elif testScore >= 70: print (GRADE_TAG, "C")
        elif testScore >= 60: print (GRADE_TAG, "D")
        else: print (GRADE_TAG, "F")


    #show average
    def calculateAverage(testScore, gradeList):
        avg = sum(gradeList)/len(gradeList)
        print(OUTPUT_TAG, format(avg, ".0f"))
        avg = testScore
        determineGrade(testScore)

    def housekeeping():
        input ("Press enter to exit.")
        os._exit(1)

    #control    
    def main():
        #variables
        testScore = avg = 0
        gradeList = [testScore]

    #calls
    progId()
    getInput(testScore, gradeList)
    calculateAverage(testScore, gradeList)

    main()
    housekeeping()


Solution 1:[1]

If for some reason your main does not get called before the rest your gradeList is never initialised and calling methods on it would do nothing? I would initialise the array at the beginning of the file. You should test if at any point your array does not only contain 0, or nothing at all with a console.log().

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 William Lafond