しばらくの間を変換しますが、同じプロパティを維持しますか?[複製]
Dec 06 2020
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
が、すべて同じプロパティを維持しますコード自体を邪魔することなくそれを行う方法はありますか?
回答
2 JohnGordon Dec 06 2020 at 03:41
for
ループをループに変換したいだけの場合while
、これら2つのループは同等です。
for x in range(y):
# do stuff
x = 0
while x < y:
# do stuff
x += 1
1 DanielLee Dec 06 2020 at 03:33
z変数を0にインスタンス化する必要があります。次に、lのすべての要素がチェックされたら、whileループを使用して中断できます。
あなたの場合、l [z + 1]を実行しようとすると、indexErrorがスローされると思います。したがって、終了条件としてy-1が必要になります。
z = 0
while z < y:
if (sum(l[z+1:]) == sum(l[:z])):
x = False
return z
z += 1
1 МаксимФомин Dec 06 2020 at 03:34
コードにインデントはありませんが、次のようになります。range(y)は0からy-1を意味するため、0:から開始しz = 0
、反復ごとにzを1ずつ増やしますz += 1
。最後の値はy-1であるため、z = yのときに停止する必要があります。したがって、条件がz < 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