fork download
  1. """Challenge 6: Filter Failed API Requests
  2. Return records whose status is an HTTP error (>= 400).
  3. Records with a missing/invalid status are skipped.
  4. """
  5.  
  6. def filter_failed_requests(requests):
  7. failed = []
  8. for req in requests:
  9. try:
  10. status = int(req.get("status"))
  11. except (TypeError, ValueError):
  12. continue
  13. if status >= 400:
  14. failed.append(req)
  15. return failed
  16.  
  17.  
  18. if __name__ == "__main__":
  19. test_data = [
  20. {"url": "/users", "status": 200},
  21. {"url": "/login", "status": 401},
  22. {"url": "/orders", "status": 500},
  23. {"url": "/health", "status": 399},
  24. {"url": "/broken"}, # missing status
  25. ]
  26. result = filter_failed_requests(test_data)
  27. print(result)
  28. assert [r["url"] for r in result] == ["/login", "/orders"]
  29. assert filter_failed_requests([]) == []
  30. print("Challenge 6 OK")
Success #stdin #stdout 0.1s 14192KB
stdin
Standard input is empty
stdout
[{'url': '/login', 'status': 401}, {'url': '/orders', 'status': 500}]
Challenge 6 OK