python - 什么是无限循环?
问题描述
据我了解,当循环的条件部分没有终止条件时,该循环称为无限循环。
例如,
while True:
text = input("Enter something (q to quit) # ")
print(text)
if text=="q":
break
或者,如果循环永远不会停止,则该循环称为无限循环。
例如,
i = 0
while i == 0:
text = input("Enter something (q to quit) # ")
print(text)
我对么?
解决方案
input
如果函数的行为符合定义,并且您的计算机连接了一个输入设备,那么您的第一个示例将永远不会导致发生无限循环,这样您就可以使该函数返回一个“q”。您的第二个示例在执行时总是会导致发生无限循环。
从技术上讲,您的代码中永远不会有无限循环。无限循环是在程序执行期间发生的事情。当您知道给定当前条件的代码逻辑意味着无法让当前循环的代码退出该循环时,您可以说您有一个无限循环。有很多事情可以导致这种情况。当然,有些代码块显然会导致在执行该代码时发生无限循环。
这三个代码片段都不是while True: break
,while True: pass
或者while True:
是无限循环。它们在运行时可能会或可能不会导致无限循环。该行的存在while True:
并不意味着您拥有将导致无限循环的代码。while True: break
运行时永远不会导致无限循环。while True: pass
运行时总是会导致无限循环。
考虑:
i = 1
while i != 0:
i = someFunction()
没有办法知道这是否会导致无限循环。这显然取决于是否someFunction
可以返回0
。也许该函数仅0
在当前日期为 1982 年时才返回。如果是这样,那么它就是一个无限循环。但也许它会0
在两周后回来。在这种情况下,它不是一个无限循环,而是一个两周内不会退出的循环。当然,这两个示例假设您不去更改计算机的时钟。如果您在询问这些是否是无限循环时允许这样做,那么如果您可以更改计算机的时钟并导致函数返回,那么 1982 年的案例也不是严格意义上的无限循环0
。
综上所述,如果有人将一段代码标记为无限循环,如果它很明显会导致一个发生,我没有问题。我不会纠正那个人。这就是为什么我在答案顶部附近说“技术上”。
推荐阅读
- c# - 更新已在 C# 中的 Bot Framework v4 中发布自适应卡
- c++ - pcl::io::loadPCDFile("2.pcd", *cloud); 错误
- xml - 用于下载 XML 并使用 XPath 生成新 XML 的脚本
- c# - 测量每个实体框架查询的时间
- javascript - 在 Javascript 中继承静态属性
- selenium - 如何使用 Selenium 和 Python 单击 iframe 内的按钮
- pdf - 遍历整个PDF并将蓝色更改为黑色并删除下划线(但仅限于包含“http//”和“https//”的文本)+ iText
- sql-server - 如何在swift中执行插入、更新和删除(sql server)查询
- php - 关系的访问关系
- linux - 在 RedHat 7.7 中使用 grep