| t | import itertools | t | import itertools | 
            |  |  |  |  | 
            |  | def speed(path, stops, times): |  | def speed(path, stops, times): | 
            |  | path_iter = iter(path) |  | path_iter = iter(path) | 
            |  | stops_iter = itertools.cycle(stops) |  | stops_iter = itertools.cycle(stops) | 
            |  | times_iter = iter(times) |  | times_iter = iter(times) | 
            |  | while True: |  | while True: | 
            |  | try: |  | try: | 
            |  | N = next(stops_iter) |  | N = next(stops_iter) | 
            |  | except StopIteration: |  | except StopIteration: | 
            |  | break |  | break | 
            |  | total_distance = 0 |  | total_distance = 0 | 
            |  | for _ in range(N): |  | for _ in range(N): | 
            |  | try: |  | try: | 
            |  | distance = next(path_iter) |  | distance = next(path_iter) | 
            |  | total_distance += distance |  | total_distance += distance | 
            |  | except StopIteration: |  | except StopIteration: | 
            |  | break |  | break | 
            |  | if total_distance == 0: |  | if total_distance == 0: | 
            |  | break |  | break | 
            |  | try: |  | try: | 
            |  | time = next(times_iter) |  | time = next(times_iter) | 
            |  | except StopIteration: |  | except StopIteration: | 
            |  | break |  | break | 
            |  | average_speed = total_distance / time |  | average_speed = total_distance / time | 
            |  | yield average_speed |  | yield average_speed |