@nohchiborz

Python. Обновляется ли значение переменной, находящейся в цикле, после его итерации?

Есть фрагмент кода:
digits = sys.argv[1]
    row = 0
    while row < 7:
        line = ""
        column = 0
        while column < len(digits):
            number = int(digits[column])
            digit = Digits[number]
            line += digit[row] + "  "
            column += 1
        print(line)
        row += 1

Два цикла while, одна вложенная в другую, и для каждого - переменная поставленная в условие. Меня интересует момент со вторым циклом и переменной column, которая приходится условием циклу. Допустим, что входной аргумент из sys.argv - 1, из этого выходит, что наш второй цикл выполнится только один раз, при этом добавив в переменную column значение 1. После этого "работа" перейдет к первому циклу, он опять запустит наш цикл... но ведь теперь условие для вложенного цикла не истинно, так как column имеет значение 1, что равно значению из переменной digits. В той программе, с которой я взял этот кусок кода, цикл выполняется 7 раз. Означает ли это, что переменная находящаяся в цикле обновляет свое значение вместе с итерацией цикла?
Наверное я задаю глупейший вопрос, но очень хочется понять, именно понять этот момент. Сам только только начинаю изучение программирования)
  • Вопрос задан
  • 1055 просмотров
Решения вопроса 1
Означает ли это, что переменная находящаяся в цикле обновляет свое значение вместе с итерацией цикла?

Нет, она не обновляется "сама по себе". В тексте программы она намеренно обнуляется в этой строчке:
column = 0
Ну и в другом ответе правильно подсказали. Изучите отладчик pdb или встроенный в PyCharm, VisualStudio...
Отладчики именно для таких целей служат.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
abs0lut
@abs0lut
Откройте отладчик, и посмотрите значения переменных.
Ответ написан
Комментировать
@polosaty_mg
по поводу отладчиков:
1. можно просто print`ов раскидать в интересующих местах
digits = sys.argv[1]
    row = 0
    column = None
    while row < 7:
        print('1 column: %r' % column)
        line = ""
        column = 0
        while column < len(digits):
            number = int(digits[column])
            digit = Digits[number]
            line += digit[row] + "  "
            column += 1
        print(line)
        row += 1
    print('2 column: %r' % column)

2. pip install pudb
и в коде вставить строчку
import pudb; pudb.set_trace()
или
import pudb; pu.db
import pudb; pu.db 
digits = sys.argv[1]
    row = 0
    while row < 7:
        line = ""
        column = 0
        while column < len(digits):
            number = int(digits[column])
            digit = Digits[number]
            line += digit[row] + "  "
            column += 1
        print(line)
        row += 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы