Третья задача была довольно простой, если проявить внимательность.

Код задачи:

distance = {"home_school": 3, "school_shop": 2, "shop_home": 1}  
  
speed = {"runing": 15, "jogging": 10, "walking": 5, "crawling": 3}  
  
time = (  
    distance.get("home_school", 0) / speed.get("jogging", 0)  
    + distance.get("school_shop", 0) / speed.get("running", 0)  
    + distance.get("shop_home", 0) / speed.get("walking", 0)  
)  
  
print(time)

Разбор задачи. Вся суть задачи сводится к пониманию работы метода .get() у словарей. Дело в том, что метод принимает один обязательный элемент - ключ, по которому ищет значение в словаре, и стандартное значение, которое возвращает, если ключ не был найден. Если стандартное значение не указано, возвращается None.

Первым на ошибку указал в комментариях - MAG.

Если внимательно пройтись по операторам в переменной time и ключам словаря, станет очевидно, что в словаре speed нет ключа running, а есть runing. Поэтому метод .get() вернёт установленное стандартное значение - 0.

Получается, что в одной из частей выражения мы делим на ноль, в связи с чем получаем ошибку DivisionByZero.