python-3.x - 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)
我无法找到逻辑出错的地方。有人可以指出我的错误并让我朝着正确的方向前进吗?谢谢。
解决方案
代码现在不完整,但您不断将行计数器重置为 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))
这似乎与您的代码相匹配,但不一定与您问题中的逻辑相匹配。
推荐阅读
- sqlite - 为什么删除本地服务器存储上的sqlite文件时必须断开sqlite数据库?
- pandas - Pandas Index.droplevel() 适用于 0.25.3 但不适用于 1.2.4
- c# - 如何使一个类在 C# 中用作二维数组?
- signalr - Blazor SignalR 应用程序错误 AuthenticationException:根据验证过程,远程证书无效
- r - R 中的 2D 密度图和等高线:如何保持图的低密度部分的等高线?
- mysql - 演示 pandas 中的简单连接
- sql - 如何从 SQL 中基于事件的表中获取快照视图?
- c# - Streamreader 添加带有打开文件对话框的列
- python - 使用 2D 索引从 1D 数组中收集 Torch.gather
- flutter - 每周显示日期,并在几周之间显示自定义文本