首页 > 解决方案 > openpyxl - While 循环无限运行,尽管 IF 条件中的类似逻辑运行良好。不知道问题出在哪里

问题描述

我有一列有多个学生分数值,两者之间有差距。我需要在列中的空白单元格之前选择最后一个值。

我正在执行以下操作,我正在检查值,直到 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)

我无法找到逻辑出错的地方。有人可以指出我的错误并让我朝着正确的方向前进吗?谢谢。

标签: python-3.xopenpyxl

解决方案


代码现在不完整,但您不断将行计数器重置为 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))

这似乎与您的代码相匹配,但不一定与您问题中的逻辑相匹配。


推荐阅读