EXERCISE 10: Store flashcard pairs with a list of tuples
- Tuples
forloops (revisited)- Iterating through lists and tuples (revisited)
Task 1: Upgrade from a list of single words to a list of tuples, each containing a question and answer. Each flashcard needs two pieces of information, a “question” and an “answer”, which should be stored together in a fixed, structured way. Replace your list of words with a list of tuples. Each tuple in the list should contain two elements corresponding to a question and answer.
[("question 1", "answer 1"), ("question 2", "answer 2"),...]
Task2: Within your for-loop iterating through the list of tuples, extract the question and answer. Add some string formatting do you display it in a readable format, e.g.:
Question: Largest mammal on Earth, Answer: Blue Whale
Question: Tallest type of tree, Answer: Coast redwood
or
Question: Largest mammal on Earth
Answer: Blue Whale
Question: Tallest type of tree
Answer: Coast redwood
Run and check: Run your code in the terminal to make sure it works with the command
python flashcards_app.py
When you select the “Start flashcards” option you should see the question-answer pairs in your dictionary displayed in sequence, e.g.
Question: Largest mammal on Earth, Answer: Blue whale
Question: Tallest type of tree, Answer: Coast redwood
Question: Process by which plants make food, Answer: Photosynthesis
Question: Fastest land animal, Answer: Cheetah
Question: Largest ocean on Earth, Answer: Pacific Ocean
Read through and add comments: Add any comments in your code that will help you understand it when you come back to it later.
Save your progress: Commit with message “EXERCISE 10: Store flashcard pairs with a dictionary” and save your work to Github with the standard Git workflow.
(Re)read the guides:
forloops (revisited)- Iterating through lists and tuples (revisited)
Example solution
flashcards_app.py
# Created by: Alex Ubuntu
# Date: 01.01.2026
# Purpose: A personal flashcard trainer to help with learning
# Flashcards list
flashcards_list = [
("Largest mammal on Earth", "Blue whale"),
("Tallest type of tree", "Coast redwood"),
("Process by which plants make food", "Photosynthesis"),
("Fastest land animal", "Cheetah"),
("Largest ocean on Earth", "Pacific Ocean")
]
### INITIAL INTERACTION WITH USER
# Welcome message
print("Welcome to your personal flashcard trainer!")
# Absolute maximum number of cards so that the user can't ask for too many
ABSOLUTE_MAX_CARDS = 100
DEFAULT_MAX_CARDS = 20
# Fetch from user and save to variable
name = input("What is your name? ")
max_cards = DEFAULT_MAX_CARDS # Set a default value for max_cards
# Confirm name
print(f"\nMy name is {name}")
# Card and score variables
num_cards_completed = 0
num_cards_correct = 0
score = 0
### APP MENU LOOP
while True:
print("\nSelect an option by entering a number")
print("1: Set the number of cards you wish to practice")
print("2: Start flashcards")
print("3: Show the current score")
print("4: Exit")
choice = input("\nChoose an option: ")
if choice == "1":
while True:
# More stringent validation for input for maximum number of cards
# Fetch input from user but don't attempt to convert the input string
# to int until certain it will work
entered_max_cards = input("\nHow many cards would you like to practice each session? ")
# Check if input string represents an integer
if entered_max_cards.isdigit():
# Convert to integer data type
entered_max_cards = int(entered_max_cards)
# Check if value is within the value range
# (between 1 and the absolute maximum number of cards)
if entered_max_cards > 0 and entered_max_cards < ABSOLUTE_MAX_CARDS:
# Set the max_cards variable with the user's preference
max_cards = entered_max_cards
# Confirm number maximum number of cards per session
print(f"\nI want to practice at most {max_cards} cards per session")
break
else:
## Let the user know what the range should be (Bonus task).
print(f"\nPlease enter a valid number bewteen 1 and {ABSOLUTE_MAX_CARDS}.")
else:
print(f"\nPlease enter a whole number number over 0.")
elif choice == "2":
# Iterate through flashcards list of tuples
# Each tuple element of the list contains a question, answer pair
for q, a in flashcards_list:
print(f"\nQuestion: {q}\n")
print(f"\nAnswer: {a}\n")
elif choice == "3":
# Handle case where no cards have been completed yet.
if num_cards_completed <=0:
print("You need to practice before you can get a score.")
continue
score = (num_cards_correct/num_cards_completed) * 100
# Display score information
print(f"\nYou have answered {num_cards_correct} out of {num_cards_completed} correctly. Your score so far is {score}%.")
# Display feedback message based on score
if score > 90 and score <= 100:
print("Excellent work!")
elif score > 70 and score <= 90:
print("Good job!")
elif score > 50 and score <= 70:
print("Keep practicing!")
elif score > 0 and score <= 50:
print("Need more study time!")
else:
print("Score lies outside range")
elif choice == "4":
print(f"We hope you enjoyed your practice session today, {name}.")
# Display score information
print(f"You have answered {num_cards_correct} out of {num_cards_completed} correctly. Your score for this session {score}%.")
print("Look forward to seeing you again soon!")
break
else:
# Clarify instruction to get valid input
print("\nInvalid value entered. Please make sure you enter just a single digit (no other words): 1, 2, 3 or 4, to select an option.")
Take a break: 🧘
