Search code examples
pythonpython-3.2

Confusing name error


I have a question. I ran this program below and I got this unusual error that said that the name 'mean' is not defined. Here is the error:

Traceback (most recent call last):
  File "C:/Python32/Computer science stuff/PracticeTest 175-183.py", line 45, in <module>
    main()
  File "C:/Python32/Computer science stuff/PracticeTest 175-183.py", line 44, in main
    displaySummary()
  File "C:/Python32/Computer science stuff/PracticeTest 175-183.py", line 23, in displaySummary
    print("List's mean: " + str(mean))
NameError: global name 'mean' is not defined

Here is the code. What is my mistake?

"""
Programmer: Bertrand Zhu
"""

#Defining needed functions
def askName(myName):
    myName = myName.upper()
    return myName

def calculateMean(a, b, c, d, e):
    sumNum = a + b + c + d + e
    mean = round(sumNum, 2)
    return mean

def displaySummary():
    a = int(input("Input your first number please: "))
    b = int(input("Input your second number please: "))
    c = int(input("Input your third number please: "))
    d = int(input("Input your fourth number please: "))
    e = int(input("Input your fifth number please: "))
    calculateMean(a, b, c, d, e)
    print("The values used: " + str(a) + " " + str(b) + " " + str(c) + " " +     str(d) + " " + str(e))
    print("List's mean: " + str(mean))
    print()
    print()

def programmerID():
    print()
    print()
    print("Programmer: THIS INFORMATION IS CLASSIFIED")
    print("Roster #: 20")
    print("Period: 7")
    print()
    print()

def main():
    while True:
        programmerID()
        georgiePorgie = input("Enter your name: ")
        if georgiePorgie.upper() == "QUIT":
            break
        else:
            askName(georgiePorgie)
            displaySummary()
main()   
print("Goodbye, " + myName)

Solution

  • Assign the result of the calculateMean() function to the mean "local" variable:

    mean = calculateMean(a, b, c, d, e)
    print("The values used: " + str(a) + " " + str(b) + " " + str(c) + " " +     str(d) + " " + str(e))
    print("List's mean: " + str(mean))