Невозможно сосчитать итерации на двойной для l oop in python - PullRequest
0 голосов
/ 06 января 2020

У меня проблемы с реализацией счетчика для подсчета итераций на удвоении для l oop.

Мой код следующий:

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 соответственно. Чего я ожидал, так это значения sampleCount 921600 и 230400. Однако он печатает 1279 или 639. Кроме того, когда я тестировал печать i и j, вот так:

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

Что я получаю, так это печать всей программы значения i, от 0 до l-1, и только затем выведите значения j от 0 до c -1.

Может кто-нибудь сказать мне, что я могу делать неправильно? Заранее спасибо!

Редактировать: вставленный код без идентификатора

Редактировать 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
         ...   ...

1 Ответ

1 голос
/ 06 января 2020

Когда я запустил тот же код, я получил следующий результат:

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

То же самое вы ожидаете

...