Python 将文本添加到表格中,最多添加到某个数字
我有一个表,我想用数字1到最大值填充,其中最大值可以是大于1但最多为表中单元格总数的任何数字。我遇到的问题可能真的很容易,但我不仅仅是: 一旦达到最大值,停止向表中添加数字 能够从不同的位置开始(例如,第一行中的第三列) 我可以得到要填充的数字,但不能停留在最大数字。我已经尝试将迭代器放在for循环的所有级别,但我无法实现我的结果 以下是我目前的代码:Python 将文本添加到表格中,最多添加到某个数字,python,python-docx,Python,Python Docx,我有一个表,我想用数字1到最大值填充,其中最大值可以是大于1但最多为表中单元格总数的任何数字。我遇到的问题可能真的很容易,但我不仅仅是: 一旦达到最大值,停止向表中添加数字 能够从不同的位置开始(例如,第一行中的第三列) 我可以得到要填充的数字,但不能停留在最大数字。我已经尝试将迭代器放在for循环的所有级别,但我无法实现我的结果 以下是我目前的代码: from docx import Document document_name = 'table_loop_test.docx' docume
from docx import Document
document_name = 'table_loop_test.docx'
document = Document('template.docx')
table = document.add_table(cols=7, rows=5)
iterator = 1
max = 30
while iterator <= max:
for row in table.rows:
for cell in row.cells:
cell.text = f'{iterator}'
iterator += 1
document.save(document_name)
try:
subprocess.check_output('open ' + document_name, shell=True)
except subprocess.CalledProcessError as exc:
print(exc.output).decode('utf-8')
来自docx导入文档
document\u name='table\u loop\u test.docx'
文档=文档('template.docx')
表格=文档。添加表格(cols=7,rows=5)
迭代器=1
最大值=30
while iteratorwhile循环的一次迭代将遍历您创建的整个嵌套for循环。您可以添加一个条件来中断这两个for循环,而不是使用while循环
for row in table.rows:
for cell in row.cells:
cell.text = f'{iterator}'
iterator += 1
if iterator > max_cell:
break
else:
continue
break
我总是觉得使用for else循环很有趣,因为我不记得什么时候执行了else
,所以另一种方法是在函数中使用return
:
def make_table(max_cell):
for row in table.rows:
for cell in row.cells:
cell.text = f'{iterator}'
iterator += 1
if iterator > max:
return
while循环的一次迭代将遍历所创建的整个嵌套for循环。您可以添加一个条件来中断这两个for循环,而不是使用while循环
for row in table.rows:
for cell in row.cells:
cell.text = f'{iterator}'
iterator += 1
if iterator > max_cell:
break
else:
continue
break
我总是觉得使用for else循环很有趣,因为我不记得什么时候执行了else
,所以另一种方法是在函数中使用return
:
def make_table(max_cell):
for row in table.rows:
for cell in row.cells:
cell.text = f'{iterator}'
iterator += 1
if iterator > max:
return
根据我的意见,让for循环依赖于max
,解决方案如下:
for row in table.rows:
for cell in row.cells:
if iterator <= max:
cell.text = f'{iterator}'
iterator += 1
对于table.rows中的行:
对于row.cells中的单元格:
如果迭代器基于我的注释使for循环依赖于max
,则解决方案可能是:
for row in table.rows:
for cell in row.cells:
if iterator <= max:
cell.text = f'{iterator}'
iterator += 1
对于table.rows中的行:
对于row.cells中的单元格:
如果迭代器您可能希望:
if iterator > max:
break
在两个for循环中,您可能需要放置:
if iterator > max:
break
在两个for循环中我想这是因为2个for循环不依赖于max
变量。您需要在for循环中检查iterator
没有增加到max
以上,我想这是因为您的2个for循环不依赖于max
变量。您需要在循环中检查迭代器
没有增加到max
以上,这很漂亮。它工作得很好。非常感谢你的帮助@giffysquid我很高兴它成功了:)如果这解决了您的问题,请将其标记为所选答案您介意用break
解释更多您的意思吗?我是Python新手,但对尽可能提高效率感兴趣。谢谢again@giffysquid使用break
语句将导致调用它的for循环停止。这将稍微优化我们的代码,因为如果iterator>max
,我们不想继续迭代循环。我们需要两个break
语句——一个用于中断内部循环,然后一个用于中断外部循环。这很漂亮。它工作得很好。非常感谢你的帮助@giffysquid我很高兴它成功了:)如果这解决了您的问题,请将其标记为所选答案您介意用break
解释更多您的意思吗?我是Python新手,但对尽可能提高效率感兴趣。谢谢again@giffysquid使用break
语句将导致调用它的for循环停止。这将稍微优化我们的代码,因为如果iterator>max
,我们不想继续迭代循环。我们需要两个break
语句——一个用于中断内部循环,另一个用于中断外部循环。