En retard à la fête, mais pour toute personne chargée de créer la sienne ou souhaitant voir comment cela fonctionnerait, voici la fonction avec un bonus supplémentaire de réorganiser les valeurs de démarrage-arrêt en fonction de l'incrément souhaité:
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
Incrément négatif:
for i in RANGE(1, 10, -1):
print(i)
Ou, avec start-stop inversé:
for i in RANGE(10, 1, -1):
print(i)
Production:
10
9
8
7
6
5
4
3
2
1
Incrément régulier:
for i in RANGE(1, 10):
print(i)
Production:
1
2
3
4
5
6
7
8
9
Incrément zéro:
for i in RANGE(1, 10, 0):
print(i)
Production:
'Error! Please enter nonzero increment value!'