C语言 在python中可以实现for循环的无限循环?

j91ykkif  于 2023-01-25  发布在  Python
关注(0)|答案(2)|浏览(171)

print语句可以执行多少次

for i in range (1,6,-1):
   print(done)

答案是没有,但是在C语言中,如果我们写这段代码,它会在无限模式下运行,为什么?

int i;
for (i=5; i<=10; i--)
 {
     printf("what happens");
 }

我在Python中试过,它甚至没有运行,但在C中它运行了无限次,为什么?

hyrbngr7

hyrbngr71#

Python中第二个代码片段的等效表达式为

i = 5

while i <= 10:
   print('what happens')
   i -= 1

由于i在每个周期减少1,并且永远不会超过10,因此循环永远不会退出。

t1rydlwq

t1rydlwq2#

  • Python * 和 * C**for * 循环之间有一个根本的区别:
    • Python *:循环是对(有限)序列的元素执行的,只要其中还有元素,循环就会继续([Python. Docs]:复合语句-for语句)
    • C :只要满足条件,循环就会继续([CPPReference]: for loop)。为了复制序列迭代行为,某些语言具有foreach*

如前所述:
1.代码段中的 * C * 示例不是无限的,而是依赖于数学回绕(当超过整型类型界限时),并且(对于大多数实现)将执行***232 - 5次。
如果您想在 * C * 中实现真正的无限循环,请使用:
* 一月一日

1.您可以改用***while***循环
由于 * Python * 的 * for * 循环的本质,你想要的行为不能被 * OOTB * 复制,但是有一些技巧(将 * while * 转换为 * for *)。
这可以通过[Python.Docs]来完成:循环(可迭代):

>>> import itertools as its
>>>
>>>
>>> it = its.cycle([None])  # Infinite iterable
>>>
>>> next(it)
>>> next(it)
>>> next(it)
>>> next(it)
>>>
>>> for _ in it:
...     if input("Press 'n' to exit: ").lower() == "n":
...         break
...
Press 'n' to exit: y
Press 'n' to exit: 
Press 'n' to exit: A
Press 'n' to exit: Y
Press 'n' to exit: t
Press 'n' to exit: 1.618
Press 'n' to exit: sdf54
Press 'n' to exit: n
>>>

相关问题