Ваша ошибка лежит здесь:
k=i
for j in range(4):
last_digit=k%10
k=i//10
Вы присваиваете i // 10
k
каждой итерации, и i
никогда не меняется, поэтому вы всегда смотрите только на две последние цифры, но никогда ничегоостальное.Если i
начинается с 1234
, то k
начинается с 1234
, last_digit
становится 4
и k
становится 123
.С этого момента вы смотрите только на 123
(last_digit
будет 3
и k = i // 10
, поэтому 123
снова, каждая итерация).
Вам нужно разделить k
:
k=i
for j in range(4):
last_digit=k%10
k=k//10
Более простым способом будет сравнение цифр (строковых значений) с набором четных цифр:
even = set('02468')
results = []
for i in range(first, last + 1):
if set(str(i)) <= even: # only even digits used
results.append(i)