Отвечая именно на вопрос в заголовке: использовать свой класс
в качестве итерируемого объекта и в нем делать действия, которые будут являться возвратом.
А так вайлом проще конечно. class TipaRange:
def __init__(self, a, b):
self.a = a - 1
self.b = b
def __iter__(self):
return self
def __next__(self):
self.a += 1
if self.a >= self.b:
raise StopIteration
return self.a
def return_back(self):
self.a -= 1
r = TipaRange(1, 5)
for i in r:
x = int(input(f"{i} % 2 = "))
if i % 2 != x:
r.return_back()