Implement count function

Having discussed the algorithm for a counting function, I’d like you to try to implement it in another context.

Imagine a class has completed a short online quiz to test their knowledge. Marks are out of 10, and you want to know how many learners got top marks. Wouldn’t it be good to get a computer to analyse the data for you?

from random import randint


scores = []


for x in range (0, 30):

  scores.append(randint(0, 10))    # Generate a random number from 0 to 10 and append to scores


print(scores)

Now you have a list containing 30 learners’ quiz scores between 0 and 10.

To count the number of 10s, you need to iterate over the list checking to see if each score is equal to 10. When you find a 10, you need to increment a tens variable that keeps a count of how many you have found. Add the following to your existing code.

tens = 0    # Initialise a variable for counting scores of ten


for score in scores:

  if score == 10:

    tens += 1


print("{0} learners got top marks".format(tens))

Tip: The line tens += 1 is short for tens = tens + 1. It’s such a common thing to do that Python and other programming languages have a shorthand for it.

Challenge

Counting the number of occurrences in a list is a common task, so it makes sense to create a function that can check for any item in a list.

The function would need to take two parameters: the target item that you want to count occurrences of, and the list of items.

Can you add a generic count function to this program so that it prints out the number of learners that scored top marks?

import random


#

# Add your count function here

#


scores = []


for x in range (0, 30):

  scores.append(random.randint(0, 10))


print(scores)


top_scorers = count(10, scores) # Count function called here


print("{0} learners got top marks".format(top_scorers))

See if you can use your function to count other items in lists.

In the next step, you’ll have the chance to share your code and suggestions.