Python coding help


#1

Hello Team. I can not make out the question

My code

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]
}

# Add your function below!
def average(numbers):
    total = sum(numbers)
    total = float(total)
    result = total/len(numbers)
    return result
    
def get_average(student):
    homework = average(student["homework"])
    quizzes = average(student["quizzes"])
    tests= average(student["tests"])
    #weights = (homework+quizzes+tests)/3
    tot = (homework0.1)+(quizzes0.3)+(tests0.6)
    return tot
    
def get_letter_grade(score):
    if score >= 90:
        return "A"
    elif score>=80 and score<90:
        return "B"
    elif score>=70 and score<80:
        return "C"
    elif score>=60 and score<70:
        return "D"
    else:
        return "F"
        
print get_letter_grade(get_average(lloyd))

def get_class_average(students):
    results=[]
    for student in students:
        get_average(student)
        results.append(student)
        return results

Error: Oops, try again. get_class_average([alice]) should return a number

Please help me


#2

you should append get_average(student) to results, not student

a function ends the moment a return keyword is reached, this currently happens in the first iteration of your loop, change the indent of return so the whole loop can run

you should return the average() of results. (see instructions)

if you need more help, post your code with markup:


#3

Thanks for your reply. Please check the code

`
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]
}

Add your function below!

def average(numbers):
total = sum(numbers)
total = float(total)
result = total/len(numbers)
return result

def get_average(student):
homework = average(student["homework"])
quizzes = average(student["quizzes"])
tests= average(student["tests"])
#weights = (homework+quizzes+tests)/3
tot = (homework*0.1)+(quizzes*0.3)+(tests*0.6)
return tot

def get_letter_grade(score):
if score >= 90:
return "A"
elif score>=80 and score<90:
return "B"
elif score>=70 and score<80:
return "C"
elif score>=60 and score<70:
return "D"
else:
return "F"

print get_letter_grade(get_average(lloyd))

def get_class_average(students):
results=[]
for student in students:
get_average(student)
results.append(get_average(student))
return average(results)
`
Error:- get_class_average([alice, lloyd]) returned 91.15 instead of 85.85 as expected


#4

make sure that the lines where you place the back-ticks, that they have no additional spacing (before or after)

i already covered this problem as well:


#5

Thank you so much Stetim.


#6