Works here but not on pycharm?

#1

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)

#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"]))

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

#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))

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.