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?
First, generate a set of random scores to represent the class. You’ll use the randint function, from Python’s random library, which takes a minimum and maximum number for the values to be generated.
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.
Next you want to know how many of those learners achieved a top score of 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.
What about counting occurrences of a given item in a list of strings?
Can you count numbers in a particular range, e.g. less than 3?
Can you count vowels in a word?
In the next step, you’ll have the chance to share your code and suggestions.