📖 Scenario: You want to create a simple reaction time game on your Raspberry Pi. The game will measure how fast you can press a key after a signal appears.This is like testing how quickly you can catch a ball after someone throws it to you.
🎯 Goal: Build a reaction time game that waits a random time, then asks the player to press Enter as fast as possible. The program will then show the reaction time in seconds.
📋 What You'll Learn
Use the time module to measure time.
Use the random module to wait a random delay.
Prompt the user to press Enter to start and to react.
Calculate and display the reaction time with 3 decimal places.
💡 Why This Matters
🌍 Real World
Reaction time games help improve focus and hand-eye coordination. They are used in sports training and cognitive testing.
💼 Career
Understanding how to measure time and handle user input is useful in many programming jobs, especially in game development and interactive applications.
Progress0 / 4 steps
1
Setup imports and initial message
Write code to import the time and random modules. Then print the message "Get ready to test your reaction time! Press Enter to start."
Raspberry Pi
Hint
Use import time and import random. Use print() to show the message.
2
Wait for user to start and add random delay
Write code to wait for the user to press Enter using input(). Then create a variable called delay that stores a random float between 2 and 5 using random.uniform(2, 5). Use time.sleep(delay) to pause the program for that many seconds.
Raspberry Pi
Hint
Use input() to wait for Enter. Use random.uniform(2, 5) to get a random delay. Use time.sleep() to pause.
3
Measure reaction time
Write code to record the current time in a variable called start_time using time.perf_counter(). Then print "Press Enter now!" and wait for the user to press Enter again. After that, record the current time in a variable called end_time using time.perf_counter(). Calculate the reaction time by subtracting start_time from end_time and store it in a variable called reaction_time.
Raspberry Pi
Hint
Use time.perf_counter() to get precise time before and after the key press. Subtract to find reaction time.
4
Display the reaction time
Write code to print the message "Your reaction time is: X.XXX seconds" where X.XXX is the reaction_time rounded to 3 decimal places using an f-string.
Raspberry Pi
Hint
Use an f-string with {reaction_time:.3f} to show 3 decimal places.
Practice
(1/5)
1. What is the main purpose of a reaction time game on a Raspberry Pi?
easy
A. To measure how quickly a player presses a button after an LED lights up
B. To count how many times a button is pressed in a minute
C. To display random colors on an LED strip
D. To control the brightness of an LED using a sensor
Solution
Step 1: Understand the game goal
The reaction time game tests how fast a player reacts to a signal, usually an LED lighting up.
Step 2: Identify the key action
The player must press a button as soon as the LED lights up to measure reaction speed.
Final Answer:
To measure how quickly a player presses a button after an LED lights up -> Option A
Quick Check:
Reaction time = button press speed after LED [OK]
Hint: Focus on measuring speed after LED signal [OK]
Common Mistakes:
Confusing reaction time with counting presses
Thinking the game controls LED brightness
Assuming it displays colors randomly
2. Which Python code snippet correctly sets up GPIO pin 17 as an input for a button on Raspberry Pi?
easy
A. GPIO.setup(17, GPIO.OUT)
B. GPIO.setup(17, GPIO.IN)
C. GPIO.input(17, GPIO.IN)
D. GPIO.output(17, GPIO.IN)
Solution
Step 1: Recall GPIO setup syntax
To set a pin as input, use GPIO.setup(pin_number, GPIO.IN).
Step 2: Match the correct option
GPIO.setup(17, GPIO.IN) uses GPIO.setup(17, GPIO.IN), which is correct for input pin setup.
Final Answer:
GPIO.setup(17, GPIO.IN) -> Option B
Quick Check:
GPIO.setup(pin, GPIO.IN) sets input pin [OK]
Hint: Use GPIO.setup with GPIO.IN for input pins [OK]
Common Mistakes:
Using GPIO.OUT instead of GPIO.IN for input
Confusing GPIO.input() with GPIO.setup()
Trying to use GPIO.output() on input pins
3. What will be the output of this code snippet in a reaction time game?
import time
start = time.time()
# LED lights up here
input('Press Enter as fast as you can!')
end = time.time()
print(f'Reaction time: {end - start:.2f} seconds')
medium
A. No output because input() is not called
B. Reaction time: 0.00 seconds
C. SyntaxError due to missing parentheses
D. Reaction time: time taken between prompt and Enter press
Solution
Step 1: Understand timing with time.time()
The code records time before and after waiting for user input.
Step 2: Calculate reaction time
The difference end - start measures how long the user took to press Enter after the prompt.
Final Answer:
Reaction time: time taken between prompt and Enter press -> Option D
4. Identify the error in this Raspberry Pi reaction game code snippet:
GPIO.setup(18, GPIO.OUT)
GPIO.setup(23, GPIO.IN)
GPIO.output(23, GPIO.HIGH)
# Wait for button press on pin 23
medium
A. Pin 23 should be set as GPIO.OUT
B. GPIO.setup() missing for pin 18
C. GPIO.output() used on input pin 23, which is incorrect
D. No error, code is correct
Solution
Step 1: Check pin setup
Pin 23 is set as input with GPIO.setup(23, GPIO.IN).
Step 2: Identify incorrect usage
GPIO.output() cannot be used on input pins; it is only for output pins.
Final Answer:
GPIO.output() used on input pin 23, which is incorrect -> Option C
Quick Check:
GPIO.output() only for output pins [OK]
Hint: Use GPIO.output only on output pins [OK]
Common Mistakes:
Trying to write output on input pins
Forgetting to setup pins before use
Assuming no error when pin modes mismatch
5. You want to improve your Raspberry Pi reaction time game by adding a random delay before lighting the LED. Which code snippet correctly adds a random delay between 1 and 5 seconds before turning on the LED on pin 18?
hard
A. import random
import time
wait = random.randint(1, 5)
time.sleep(wait)
GPIO.output(18, GPIO.HIGH)
B. import random
wait = random.random(1, 5)
time.sleep(wait)
GPIO.output(18, GPIO.HIGH)
C. import random
wait = random.randint(1, 5)
GPIO.output(18, GPIO.HIGH)
time.sleep(wait)
D. import time
wait = random.randint(1, 5)
time.sleep(wait)
GPIO.output(18, GPIO.HIGH)
Solution
Step 1: Use random.randint for integer delay
random.randint(1, 5) returns an integer between 1 and 5 seconds.
Step 2: Sleep before turning LED on
time.sleep(wait) pauses the program before GPIO.output(18, GPIO.HIGH) lights the LED.
Final Answer:
import random
import time
wait = random.randint(1, 5)
time.sleep(wait)
GPIO.output(18, GPIO.HIGH) -> Option A
Quick Check:
random.randint + sleep before LED ON [OK]
Hint: Sleep before LED ON using random.randint delay [OK]
Common Mistakes:
Using random.random with arguments (invalid)
Sleeping after turning LED on
Not importing random module
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.