In ritardo alla festa, ma per chiunque abbia il compito di crearne uno proprio o vuole vedere come funzionerebbe, ecco la funzione con un ulteriore vantaggio di riorganizzare i valori start-stop in base all'incremento desiderato:
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)
Oppure, con start-stop invertito:
for i in RANGE(10, 1, -1):
print(i)
Produzione:
10
9
8
7
6
5
4
3
2
1
Incremento regolare:
for i in RANGE(1, 10):
print(i)
Produzione:
1
2
3
4
5
6
7
8
9
Incremento zero:
for i in RANGE(1, 10, 0):
print(i)
Produzione:
'Error! Please enter nonzero increment value!'