Atrasado para a festa, mas para qualquer pessoa encarregada de criar seus próprios ou quiser ver como isso funcionaria, aqui está a função com um bônus adicional de reorganizar os valores start-stop com base no incremento desejado:
def RANGE(start, stop=None, increment=1):
if stop is None:
stop = start
start = 1
value_list = sorted([start, stop])
if increment == 0:
print('Error! Please enter nonzero increment value!')
else:
value_list = sorted([start, stop])
if increment < 0:
start = value_list[1]
stop = value_list[0]
while start >= stop:
worker = start
start += increment
yield worker
else:
start = value_list[0]
stop = value_list[1]
while start < stop:
worker = start
start += increment
yield worker
Incremento negativo:
for i in RANGE(1, 10, -1):
print(i)
Ou, com start-stop invertido:
for i in RANGE(10, 1, -1):
print(i)
Resultado:
10
9
8
7
6
5
4
3
2
1
Incremento regular:
for i in RANGE(1, 10):
print(i)
Resultado:
1
2
3
4
5
6
7
8
9
Incremento zero:
for i in RANGE(1, 10, 0):
print(i)
Resultado:
'Error! Please enter nonzero increment value!'