Works here but not on pycharm?


#1



https://www.codecademy.com/courses/python-beginner-en-qzsCL/1/5?curriculum_id=4f89dab3d788890003000096

NameError: name 'lloyd' is not defined


students = [lloyd, alice, tyler]

lloyd = {
    "name": "Lloyd",
    "homework": [90.0, 97.0, 75.0, 92.0],
    "quizzes": [88.0, 40.0, 94.0],
    "tests": [75.0, 90.0]
}
alice = {
    "name": "Alice",
    "homework": [100.0, 92.0, 98.0, 100.0],
    "quizzes": [82.0, 83.0, 91.0],
    "tests": [89.0, 97.0]
}
tyler = {
    "name": "Tyler",
    "homework": [0.0, 87.0, 75.0, 22.0],
    "quizzes": [0.0, 75.0, 78.0],
    "tests": [100.0, 100.0]
}

# define averaging formula
def average(numbers):
    total = sum(numbers)
    total = float(total)
    total = total / len(numbers)
    return total
    
#get the average
def get_average(student):
    homework = average(student["homework"])
    quizzes = average(student["quizzes"])
    tests = average(student["tests"])
    return (0.1 * average(student["homework"])) + (0.3 * average(student["quizzes"])) + (0.6 * average(student["tests"]))

#assign averages to letter grades
def get_letter_grade(score):
    if score >= 90:
        return "A"
    elif score >= 80:
        return "B"
    elif score >= 70:
        return "C"
    elif score >= 60:
        return "D"
    else:
        return "F"
        
#calls function and prints letter
print get_letter_grade(get_average(lloyd))

#calculate class average
def get_class_average(students):
    results = []
    for student in students:
        results.append(get_average(student))
    return average(results)
    
#print results per student
print (get_class_average(students))
print (get_letter_grade(get_class_average))

works just fine on this site but in PyCharm it gets an error for line 1 and says name : lloyd not defined. can someone explain why it works on here but a copy paste doesnt work there?


#2

Hi @rhayes902,

This should be moved to after the tyler dictionary assignment ...

students = [lloyd, alice, tyler]

Though incorrect, your code works on Codecademy because after you have submitted the code, Codecademy stores objects in a memory cache. However, PyCharm and other development environments do not do this.

You should not have your code attempt to look up the value of an object before it has been defined.


#3

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.