Your question is Improve Provided Code. Take a moment with it on the right.
Talk me through your thinking if you like. When you're confident, submit your answer and I'll grade it like a real screen (7/10 or better passes).
Simplisafe's alarm service evaluates a batch of sensor events (door/window sensors, motion sensors) to decide whether to trigger an alert, then formats a message naming which sensors fired. A teammate wrote the two functions below and asked for a second pair of eyes before it goes into the alarm pipeline.
def evaluate_alarm(events, triggered_sensors=[]):
for event in events:
try:
sensor_id = event["sensor_id"]
status = event["status"]
if status == "open" or status == "motion":
triggered_sensors.append(sensor_id)
if len(triggered_sensors) > 3:
return True
except:
print("bad event")
if len(triggered_sensors) >= 3:
return True
return False
def format_alert(sensor_ids):
msg = "Alert triggered by sensors: "
for i in range(len(sensor_ids)):
msg = msg + str(sensor_ids[i])
if i != len(sensor_ids) - 1:
msg = msg + ", "
return msg
Given this code, how would you improve it? Point out anything you think is actually wrong, not just stylistic, and explain the impact each issue could have on a real home security system.