python for循环和if语句的作用是

2024-04-19 10:17:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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);
    }
}

我在这里遗漏了什么原因?你知道吗


Tags: and代码inforifincludemainrange
2条回答

python中的for i in range(7)循环的行为类似于for i in [0,1,2,3,4,5,6]i是该列表中的值,而不是递增的索引。因此,你的i += 1并不像你想象的那样。你知道吗

您可以使用while循环来获得与c for循环相同的行为,但是可能有一种更为python的方法来编写它。你知道吗

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

for-in循环只是将范围中的每个成员分配给i,而不是递增i。因此,在循环的当前迭代结束时,对i所做的任何修改都将丢失。你知道吗

您可以通过while循环获得所需的行为,但您必须自己增加i

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

相关问题 更多 >