gpt4 book ai didi

python - 这个 python for 循环和 if 语句表现得很奇怪

转载 作者:太空宇宙 更新时间:2023-11-04 00:43:32 25 4
gpt4 key购买 nike

我正在解决一个问题,我需要编写如下代码:

c = [0,0,1,0,0,1,0]
for i in range(7):
if(i<7-2 and c[i+2] == 0):
i += 1
print(i)

我期望这样的输出:

0
2
3
5
6

但是我得到了这个:

0
2
3
3
5
5
6

但是在 C 中使用相同的逻辑/代码它工作正常...

#include<stdio.h>
int main(){
int c[] = {0,0,1,0,0,1,0};
int i;
for(i=0;i<7;i++){
if(i<7-2 && c[i+2] == 0){
i++;
}
printf("%d\n",i);
}
}

是什么原因或我在这里遗漏了什么?

最佳答案

python 中的 for i in range(7) 循环的行为与 for i in [0,1,2,3,4,5,6] 相同。 i 是该列表中的值,而不是递增的索引。因此,您的 i += 1 并没有按照您的想法行事。

您可以使用 while 循环来获得与 c for 循环相同的行为,但可能有更 pythonic 的方式来编写它。

i = 0
while i < 7:
if(i<7-2 and c[i+2] == 0):
i += 1
print(i)
i+=1

关于python - 这个 python for 循环和 if 语句表现得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40802264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com