首页 > 解决方案 > 无法计算python中double for循环的迭代次数

问题描述

我在实现一个计数器来计算双 for 循环上的迭代时遇到了麻烦。

我的代码如下:

def encode(mat,l,c,mode,m):
    sampleCount = 0
    for i in range(l):
        for j in range(c):
            sampleCount += 1

    print(sampleCount)

我的程序调用这个函数时,“l”的值分别为 720 和 360,“c”的值分别为 1280 和 640。我所期待的是 921600 和 230400 的 sampleCount 值。但是,它打印 1279 或 639。此外,当我测试打印 i 和 j 时,如下所示:

for i in range(l):
    print(i)
    for j in range(c):
        print(j)

我得到的是程序打印所有 i 值,从 0 到 l-1,然后才打印从 0 到 c-1 的 j 值。

谁能告诉我我可能做错了什么?提前致谢!

编辑:没有标识的粘贴代码

编辑 2:尝试在 sampleCount += 1 之后评论所有内容。在这种情况下,我获得了预期的结果。如果我取消注释以下两行代码,它会继续运行良好。但是,当我尝试取消注释超过 3 行代码时,它又回到了行为不端。简而言之,它在代码如下时起作用:

def encode2(mat,l,c,mode,m):
    sampleCount = 0
    for i in range(l):
        for j in range(c):
            sampleCount += 1
            a = 0
            b = 0
            # c = 0
            # x = 0
            # if (i == 0 & j == 0):
            #     a = 0
            #     b = 0
            #     c = 0
         ...  ...

如果代码是这样的,则会再次行为不端:

def encode2(mat,l,c,mode,m):
    sampleCount = 0
    for i in range(l):
        for j in range(c):
            sampleCount += 1
            a = 0
            b = 0
            c = 0
            # x = 0
            # if (i == 0 & j == 0):
            #     a = 0
            #     b = 0
            #     c = 0
         ...   ...

标签: pythonloopsfor-loopiteration

解决方案


当我运行相同的代码时,我得到了以下结果:

def encode(l,c):
    sampleCount = 0
    for i in range(l):
        for j in range(c):
            sampleCount += 1

    print(sampleCount)
encode(360,640)

结果:230400

def encode(l,c):
    sampleCount = 0
    for i in range(l):
        for j in range(c):
            sampleCount += 1

    print(sampleCount)
encode(720,1280)

结果:921600

你的期望是一样的吗?


推荐阅读