openpyxl - цикл while работает бесконечно, хотя аналогичная логика в условии IF работает нормально. Не знаю, где проблема - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть столбец, в котором есть несколько значений для оценок учащихся с промежутками между ними.Мне нужно выбрать последнее значение перед пустой ячейкой в ​​столбце.

Я делаю ниже, где я проверяю значения до следующей ячейки в None и пытаюсь сохранить значение.Но почему-то мой цикл while работает без остановки, хотя счетчик увеличивается правильно.Если я выполняю аналогичную логику, используя IF, она печатает каждое следующее значение правильно, как и ожидалось.

for cell in row:
    if cell.value == "TEST level":
        print("Marks:")
        row_num=1
        while ("{1}".format(cell.value, cell.offset(row=row_num, column=0).value)) is not None:
            print("Inside While loop")
            last_marks = "{1}".format(cell.value, cell.offset(row=row_num, column=0).value)
            row_num=row_num+1
        print(last_marks)

Я не могу найти, где логика работает неправильно.Может кто-нибудь указать на мою ошибку и направить меня в правильном направлении?Спасибо.

1 Ответ

0 голосов
/ 16 апреля 2019

Код теперь неполный, но вы постоянно сбрасываете свой счетчик строк на 1, и ваше условие while всегда выполняется. Разумнее разбить код на отдельные части: во-первых, найдите соответствующую ячейку; во-вторых, делайте то, что хотите, с остальными ячейками в этом столбце. Это все еще не ясно из кода, где вы ищете.

for row in ws:
    for cell in row:
        if cell.value == "TEST level":
             break

for row in ws.iter_rows(min_row=cell.row+1, min_col=cell.column, max_col=cell.column):
    cell = row[0]
    print("Last marks {0} {1}".format(cell.coordinate, cell.value))

Это похоже на ваш код, но не обязательно соответствует логике вашего вопроса.

...