преобразовать на некоторое время, но сохранить те же свойства? [дубликат]
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
Итак, я хотел бы преобразовать for
в моем коде в, while
но сохранить все те же свойства, есть ли способ сделать это, не нарушая сам код?
Ответы
Если вы просто хотите преобразовать for
цикл в while
цикл, эти два цикла эквивалентны:
for x in range(y):
# do stuff
x = 0
while x < y:
# do stuff
x += 1
Вам нужно будет установить переменную z в 0, а затем вы можете использовать цикл while для прерывания после того, как все элементы l будут проверены.
Хотя в вашем случае, я предполагаю, что он выдаст indexError, когда попытается сделать l [z + 1], поэтому вам понадобится y - 1 в качестве условия завершения.
z = 0
while z < y:
if (sum(l[z+1:]) == sum(l[:z])):
x = False
return z
z += 1
В вашем коде нет отступов, но вроде должно быть так. Диапазон (у) средства от 0 до Y-1, поэтому мы начинаем с 0: z = 0
и увеличение на 1 г каждой итерации: z += 1
. Последнее значение - y-1, поэтому он должен останавливаться, когда z = y, поэтому whilez < 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