这3个for循环有什么区别?

问题描述 投票:0回答:1
def generate_coor(dimension_x,dimension_y):
    x,y=int(dimension_x/2),int(dimension_y/2)
    for i in range(0, x + 1):
        print(x)
        x=x+1

generate_coor(100,27)

上面的代码确实终止了。

def generate_coor(dimension_x,dimension_y):
    x,y=int(dimension_x/2),int(dimension_y/2)
    for i in range(0, x + 1):
        for j in range(0, y + 1):
            print(y)
            y=y+1

generate_coor(100,27)

上面的代码不会终止

def generate_coor(dimension_x,dimension_y):
    x,y=int(dimension_x/2),int(dimension_y/2)
    for i in range(0, y):
        for j in range(0, y + 1):
            print(y)
            y=y+1

上面的代码确实终止了

这三个例子有什么区别?根据代码,x或y的每次迭代应该增加1,因此循环不应该终止,但有些终止,有些不终止?

python for-loop
1个回答
1
投票

所有循环都将终止,但终止的时间取决于您作为参数输入输入的值。

第二个示例中发生了什么:

def generate_coor(dimension_x,dimension_y):
    x,y=int(dimension_x/2),int(dimension_y/2)
    for i in range(0, x + 1):
        for j in range(0, y + 1):
            print(y)
            y=y+1

是您的嵌套循环

for j in range(0, y + 1)
在第一个循环
for i in range(0, x + 1)
的每次迭代中重复自身。 在您的情况下,这特别耗时,因为执行该函数所需的 CPU 时间将与您的两个整数输入成指数关系。
如果您采用较低的值,例如

generate_coor(100,27)

,你会看到该函数退出。

    

© www.soinside.com 2019 - 2024. All rights reserved.