Основная ошибка кода — отсутствие увеличения distances на ненулевых значениях.
Помимо этого есть несколько мелких, но не менее значимых ошибок: расстояние для нулевого значения должно быть 0; return в nearest_zero_left стоит в цикле, то есть цикл выполнится ровно один раз; присваивание resultes производится только для ненулевых значений.
Всё это в сумме приводит к совершенно неверному результату.
Вот исправленный вариант:
def nearest_zero_right(street_length, street_num):
distances = None # Будет None, пока не найдём 0
resultes = [None] * street_length
for x in range(street_length):
n = street_num[x]
if n == 0:
distances = 0
else: #Иначе
if distances is not None: # Ноль найден, будем искать дистанцию
distances += 1
resultes[x] = distances
return resultes
def nearest_zero_left(street_length, street_num, resultes):
distances = None
for x in reversed(range(street_length)):
n = street_num[x]
if n == 0:
distances = 0
else: # Иначе
if distances is not None:
distances += 1
if resultes[x] is None or distances is not None and resultes[x] > distances:
resultes[x] = distances
return resultes