On 22/10/15 10:03, Vusa Moyo wrote:
Hi Guys. Thanks for the responses and assistance.

I came right after-all. The last 2 blocks read the following.

Glad you are happy but there is still something you could improve:

def get_class_average(students):
    results = []
    for a in students:
        b = float(get_average(a))

You really don't need the float() here. get_average() is guaranteed
to return a float.

        results.append(b)
    return average(results)


students = [lloyd, alice, tyler]
print(get_class_average(students))
bother = get_class_average([lloyd, alice, tyler])
print(get_letter_grade(bother))

Worked like a charm.

Thanks for the assistance.

Regards

Vusa


On Tue, Oct 20, 2015 at 2:38 PM, Alan Gauld <alan.ga...@btinternet.com <mailto:alan.ga...@btinternet.com>> wrote:

    On 20/10/15 12:29, Vusa Moyo wrote:

        Hi there. My script is as follows,


        alice = {
             "name": "Alice",
             "homework": [100.0, 92.0, 98.0, 100.0],
             "quizzes": [82.0, 83.0, 91.0],
             "tests": [89.0, 97.0]
        }


        # Add your function below!
        def average(numbers):

    >    total = sum(numbers)
    >    total = float(total)

    That line isn't necessary since the inputs are floats already.

    >    total = total / len(numbers)
    >    return total
    >

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

        def get_letter_grade(score):
             if score >= 90:
                 return "A"
             elif score >= 80:
                 return "B"


        print get_average(lloyd)

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


        get_class_average(alice)

        I receive a zero value for results, which doesnt quite make
        sense to me.


    Nor to me. Are you sure its a zero result? It should be a list of
    some kind not a number. Or do you mean you get an empty list back?

    Notice that get_class_average() expects your students value to be
    some kind of sequence or collection. The for loop will iterate
    over that. If you pass Alice as a single student it will iterate
    over the keys, trying first of all to get the average of "Alice"
    which should fail with an error. Did you get any errors? If so
    please let us see them.

    Please show us the actual code you execute, the actual output
    and the full text of any errors.

    One other thing that seems weird to me is that you go to great
    pains to produce a float as a result of get_average() but then you
    immediately convert it to an int. Why not leave it as a float?


-- Alan G
    Author of the Learn to Program web site
    http://www.alan-g.me.uk/
    http://www.amazon.com/author/alan_gauld
    Follow my photo-blog on Flickr at:
    http://www.flickr.com/photos/alangauldphotos



    _______________________________________________
    Tutor maillist  - Tutor@python.org <mailto:Tutor@python.org>
    To unsubscribe or change subscription options:
    https://mail.python.org/mailman/listinfo/tutor




--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to