[Solved] Student Becomes the Teacher – Code Academy Problem’s Solution

Topbullets.comHello friends! From last few days I have been learning Python and I found Code Academy extremely helpful. The way they make you to solve a big problem into small small chunk is very helpful to understand each and every steps properly and increase the problem solving skills. I have been following their tutorial on Python and recently completed one not very tough but interesting problem on the combination of List, Dictionary and Function. I hope if you came here from Google then you must be trying to find the solution of “Grading the students” problem. Though it is not advisable to look after the solution; you should try harder but if you have done all your efforts and want to get some hints here is the solution.

Problem: We need to create 3 dictionaries which have 3 students’ information like name, marks and all and then we would try to write few functions to calculate their average and class’s grades.

Solution: You can follow each steps mentioned in the tutorial and try yourself. Click here Code Academy or can refer to below code for hint.

##########################################
## The code is written for the Code Academy tutorial. 
## Please follow their website for more information.
## Author: Deepesh Singh
## Purpose: To learn and practice


##########################################
# Creating the list of 3 students with their relative information 
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]
}

# This function will calculate average. Say if we pass tests it will sum
# the score of tests and then divide by numbers of tests
# Example: for typer tests it would be average(tests) = (100 +100)/2 = 100
def average(numbers):
        total = sum(numbers);
        total = float(total)
        return (total/len(numbers))
        
# This function will call above average function and will calculate average
# for all entities like homework, quizzes and tests
# And then will return the final result based on weightage of each entity 
def get_average(student):
    homework = average(student["homework"])
    quizzes = average(student["quizzes"])
    tests = average(student["tests"])
    wt_score = (homework * .10 + quizzes * .3 + tests *.6)
    print ('Average Score: %s -> %s') % (student['name'],wt_score)
    return wt_score 
    
# The function will return the final result based on the score
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"
        
# In this function we will pass the list of students and will append their average score
def get_class_average(students):
    #Creating a blank list
    results = [];
    for student in students:
        #Calling average function for each student
        #and then appending the result in the result list
        results.append(get_average(student))
    #Here we have result list which will look like result[87,78,89]
    print ("\nAppened results of 3 students %s") % (results)
    return average(results)

#Creating a list of all 3 students 
students = [lloyd,alice,tyler]    

#Calling the get_average functions for all students
final_result = get_class_average(students)
print ("\nFinal average of class:")
print final_result

print ("\nFinal grade of class:")
print get_letter_grade(final_result)

Result:
Average Score: Lloyd -> 80.55
Average Score: Alice -> 91.15
Average Score: Tyler -> 79.9

Appened results of 3 students [80.55, 91.14999999999999, 79.9]

Final average of class:
83.8666666667

Final grade of class:
B

Please comment if you have better solution. Also please like if the solution helped you in any way. Looking for your suggestions.

Signature

Deepesh Singh
logo

Advertisements

Please leave your valuable comment.

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s