transformar um por um tempo mas manter as mesmas propriedades? [duplicado]
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
Então, eu gostaria de transformar o for
no meu código em um, while
mas manter todas as mesmas propriedades. Existe alguma maneira de fazer isso sem perturbar o próprio código?
Respostas
Se você deseja apenas converter um for
loop em while
loop, esses dois loops são equivalentes:
for x in range(y):
# do stuff
x = 0
while x < y:
# do stuff
x += 1
Você precisará instanciar a variável z para 0 e, em seguida, poderá usar um loop while para interromper uma vez que todos os elementos de l tenham sido verificados.
Porém, no seu caso, eu acho que ele lançará um indexError quando tentar fazer l [z + 1], então você precisará de y - 1 como a condição de terminação.
z = 0
while z < y:
if (sum(l[z+1:]) == sum(l[:z])):
x = False
return z
z += 1
Seu código não tem recuos, mas parece que deve ser assim. gama (y) meios de 0 a y-1, de modo que começam a partir de 0: z = 0
, e aumento z por um cada iteração: z += 1
. O último valor é y-1, então ele deve parar quando z = y, portanto, enquanto as condições sãoz < 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