transformer un pendant un certain temps mais garder les mêmes propriétés? [dupliquer]
def p(l):
x = True
y = len(l)
for z in range(y):
if (sum(l[z+1:]) == sum(l[:z])):
x = False
return z
if x:
return -1
Je voudrais donc transformer le for
dans mon code en un while
mais garder toutes les mêmes propriétés y a-t-il un moyen de le faire sans déranger le code lui-même?
Réponses
Si vous souhaitez simplement convertir une for
boucle en while
boucle, ces deux boucles sont équivalentes:
for x in range(y):
# do stuff
x = 0
while x < y:
# do stuff
x += 1
Vous devrez instancier la variable z à 0, puis vous pourrez utiliser une boucle while pour rompre une fois que tous les éléments de l ont été vérifiés.
Bien que dans votre cas, je suppose qu'il lèvera une indexError quand il essaiera de faire l [z + 1], donc vous aurez besoin de y - 1 comme condition de terminaison.
z = 0
while z < y:
if (sum(l[z+1:]) == sum(l[:z])):
x = False
return z
z += 1
Votre code n'a pas de retrait, mais il semble qu'il devrait en être ainsi. plage (y) un moyen de 0 à N-1, de sorte que l' on part de 0: z = 0
, et z par augmentation de 1 à chaque itération: z += 1
. La dernière valeur est y-1, elle doit donc s'arrêter lorsque z = y, donc tant que les conditions sontz < y
x = True
y = len(l)
# for z in range(y):
z = 0
while z < y:
if (sum(l[z+1:]) == sum(l[:z])):
x = False
return z
z += 1 # increase z value
if x:
return -1