gpt4 book ai didi

python - 为什么 Python for 循环不像 C for 循环那样工作?

转载 作者:太空狗 更新时间:2023-10-29 17:14:12 25 4
gpt4 key购买 nike

C:

# include <stdio.h>
main()
{
int i;
for (i=0; i<10; i++)
{
if (i>5)
{
i=i-1;
printf("%d",i);
}
}
}

python :

for i in range(10):
if i>5: i=i-1
print(i)

当我们编译 C 代码时,它会进入无限循环,永远打印 5,而在 Python 中却不会,为什么不呢?

Python 输出是:

0 1 2 3 4 5 5 6 7 8

最佳答案

在 Python 中,循环不会递增 i,而是从可迭代对象(在本例中为列表)中为其赋值。因此,在 for 循环内更改 i 不会“混淆”循环,因为在下一次迭代中 i 将简单地分配下一个值。

在您提供的代码中,当i 为6 时,它会在循环中递减,从而变为5,然后打印。在下一次迭代中,Python 简单地将其设置为列表 [0,1,2,3,4,5,6,7,8,9] 中的下一个值,即 7,并且很快。当没有更多值可取时,循环终止。

当然,你在你提供的C循环中得到的效果在Python中仍然可以实现。由于每个 for 循环都是一个美化的 while 循环,从某种意义上说,它可以像这样转换:

for (init; condition; term) ...

相当于:

init
while(condition) {
...
term
}

那么你的 for 无限循环可以用 Python 写成:

i = 0
while i < 10:
if i > 5:
i -= 1
print i
i += 1

关于python - 为什么 Python for 循环不像 C for 循环那样工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8954400/

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