0

作为一个新手,我很抱歉,但为什么这个循环会永远运行呢?

for i in range (1,3):
    while i < 5:
        print ('ha')
4

4 回答 4

3

您的代码基本上是在执行以下操作:

对于 1、2 和 3 中的每个值,请执行以下操作:当当前值小于 5 时,打印 'ha'

如您所见,该值将从 1 开始,当 1 小于 5 时,将打印“ha”。由于该值未更新,1 将始终小于 5,因此您将获得无限的 'ha's

while您可能将声明与if声明混淆了

这更有意义:

对于 1、2 和 3 中的每个值,请执行以下操作:如果当前值小于 5,则打印 'ha'

给初学者的提示:总是尝试用你的自然语言读/写你的算法,然后尝试用计算机语言对其进行编程。确实,编程语言很难,因为它们正在演变为更人性化的形式,并且它们需要您进行更多的数学思考和更有条理的思考

于 2013-06-09T22:54:49.760 回答
2

for i in range(1, 3)表示它以数字开头1

你说的是数字 1:

while 1 < 5:
    print('ha')

这将永远持续下去,因为一小于五,而且永远都是。

因此 for 循环永远不会到达2and 3,因为它还没有完成1

于 2013-06-09T22:55:22.857 回答
0

您不会i在循环内部进行修改while,因此如果循环条件为真,它将始终为真。也许你的意思是if,不是while

于 2013-06-09T22:51:20.333 回答
0

因为 while 也定义了一个循环。代码正在构建所谓的嵌套循环。与 for 循环不同,while 循环不会更新迭代器变量(实际上 while 循环上没有迭代器,只有一个条件),并且由于循环体不会改变条件,所以 i < 5 始终为真,而 while循环是无限的。

也许你想要一个 if 操作而不是一个嵌套循环?

for i in range (1,3):
    if i < 5:
        print ('ha')
于 2013-06-09T23:13:19.920 回答