📖 Scenario: You are working with a fleet of delivery drones. Each drone has a unique ID and a current battery level. You want to coordinate which drones are ready to deliver packages based on their battery levels.
🎯 Goal: Build a simple program that stores drone data, sets a battery threshold, selects drones ready for delivery, and prints their IDs.
📋 What You'll Learn
Create a dictionary called drones with drone IDs as keys and battery levels as values
Create a variable called battery_threshold with a numeric value
Use a dictionary comprehension to create a new dictionary called ready_drones with drones having battery levels above the threshold
Print the list of drone IDs from ready_drones
💡 Why This Matters
🌍 Real World
Drone delivery companies need to manage many drones and decide which ones can fly based on battery levels to ensure safe and efficient deliveries.
💼 Career
Understanding how to filter and manage data collections is key for roles in robotics programming, drone fleet management, and automation.
Progress0 / 4 steps
1
DATA SETUP: Create the drone data dictionary
Create a dictionary called drones with these exact entries: 'droneA': 85, 'droneB': 40, 'droneC': 75, 'droneD': 30
Drone Programming
Hint
Use curly braces {} to create the dictionary with keys and values separated by colons.
2
CONFIGURATION: Set the battery threshold
Create a variable called battery_threshold and set it to 50
Drone Programming
Hint
Just assign the number 50 to the variable battery_threshold.
3
CORE LOGIC: Select drones ready for delivery
Use a dictionary comprehension to create a new dictionary called ready_drones that includes only drones from drones with battery levels greater than battery_threshold
Drone Programming
Hint
Use {drone: battery for drone, battery in drones.items() if battery > battery_threshold} to filter drones.
4
OUTPUT: Print the IDs of ready drones
Print the list of keys from the ready_drones dictionary using print(list(ready_drones.keys()))
Drone Programming
Hint
Use print(list(ready_drones.keys())) to show the drone IDs ready for delivery.
Practice
(1/5)
1. What is the main goal of multi-drone coordination in drone programming?
easy
A. To make drones fly faster than sound
B. To let many drones share work safely and efficiently
C. To program drones to work alone without communication
D. To reduce the battery life of drones
Solution
Step 1: Understand the purpose of coordination
Coordination means working together safely and efficiently.
Step 2: Match the goal with options
Only To let many drones share work safely and efficiently talks about sharing work safely and efficiently.
Final Answer:
To let many drones share work safely and efficiently -> Option B
Quick Check:
Coordination = safe, efficient teamwork [OK]
Hint: Coordination means teamwork and safety [OK]
Common Mistakes:
Thinking coordination means flying faster
Ignoring communication between drones
Confusing coordination with solo drone tasks
2. Which of the following is the correct way to assign tasks to multiple drones in a coordination program?
easy
A. Assign tasks randomly without checking
B. Ignore task assignment and let drones decide
C. Assign all tasks to one drone only
D. Assign tasks clearly and check progress often
Solution
Step 1: Identify best practice for task assignment
Clear task assignment and progress checks avoid confusion.
Step 2: Compare options with best practice
Only Assign tasks clearly and check progress often matches clear assignment and progress checking.
Final Answer:
Assign tasks clearly and check progress often -> Option D
Quick Check:
Clear tasks + progress check = good coordination [OK]
Hint: Clear tasks and checks keep drones on track [OK]
Common Mistakes:
Assigning tasks randomly
Giving all tasks to one drone
Ignoring progress monitoring
3. Consider this pseudo-code for coordinating two drones:
tasks = ['scan', 'deliver']
drones = ['drone1', 'drone2']
assignments = {}
for i in range(len(drones)):
assignments[drones[i]] = tasks[i]
print(assignments)
What will be the output?
medium
A. {}
B. {'drone1': 'deliver', 'drone2': 'scan'}
C. {'drone1': 'scan', 'drone2': 'deliver'}
D. Error: Index out of range
Solution
Step 1: Understand the loop and assignments
Loop runs twice (0 and 1), assigning tasks[0] to drone1 and tasks[1] to drone2.
{'drone1': 'scan', 'drone2': 'deliver'} -> Option C
Quick Check:
Index matches tasks to drones correctly [OK]
Hint: Match index of drones and tasks in loop [OK]
Common Mistakes:
Swapping task order
Thinking index error occurs
Expecting empty dictionary
4. This code tries to assign tasks to drones but causes an error:
tasks = ['scan', 'deliver']
drones = ['drone1']
assignments = {}
for i in range(len(drones)):
assignments[drones[i]] = tasks[i]
print(assignments)
What is the error and how to fix it?
medium
A. IndexError because tasks list is longer than drones; fix by matching list sizes
B. SyntaxError due to missing colon; fix by adding colon after for
C. TypeError because assignments is not a list; fix by using a list
D. No error; code runs fine
Solution
Step 1: Identify cause of error
Loop runs once (len(drones)=1), but tasks[1] is accessed if loop ran more times; here no error yet but if loop ran more, IndexError occurs.
Step 2: Fix by matching list sizes
Ensure drones and tasks lists have same length to avoid index errors.
Final Answer:
IndexError because tasks list is longer than drones; fix by matching list sizes -> Option A
Quick Check:
List length mismatch causes index error [OK]
Hint: Check list lengths before looping [OK]
Common Mistakes:
Confusing syntax error with index error
Thinking assignments must be a list
Ignoring list length mismatch
5. You want to coordinate 3 drones to cover 3 zones without overlap. Which approach best ensures safe, efficient coverage?
hard
A. Assign each drone a unique zone and confirm completion before next task
B. Let all drones fly randomly and cover zones as they find them
C. Assign all zones to one drone and keep others idle
D. Assign zones without communication and hope for no collisions
Solution
Step 1: Understand safe and efficient coverage
Unique assignments prevent overlap and collisions.
Step 2: Evaluate options for coordination quality
Only Assign each drone a unique zone and confirm completion before next task assigns unique zones and confirms completion, ensuring safety and efficiency.
Final Answer:
Assign each drone a unique zone and confirm completion before next task -> Option A