将文本添加到 table 中,最多达到一定数量
Add text to a table up to a certain number
我有一个 table,我想用数字 1 到 max 填充,其中 max 可以是大于 1 的任何数字,但不超过 table 中的单元格总数。我正在 运行 解决可能非常简单的问题,但我不只是得到:
达到最大值后停止向 table 添加数字
能够从不同的位置开始(例如,第一行的第三列)
我可以获得要填充的数字,但不会停在最大数字上。我已经尝试将迭代器放在 for 循环的所有级别,但我无法实现我的结果。
到目前为止,这是我的代码:
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')
我以为它会在 30 点停止,但它一直在继续!非常感谢您的帮助!
while 循环的一次迭代将遍历您创建的 整个 嵌套 for 循环。除了使用 while 循环,您还可以添加一个条件来打破这两个 for 循环。
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
如果 iterator
值大于或等于 max
,则可以通过向 break
添加条件来提高效率,以防止执行循环max
值传递后。
您可能想输入:
if iterator > max:
break
在你的两个 for 循环中
我有一个 table,我想用数字 1 到 max 填充,其中 max 可以是大于 1 的任何数字,但不超过 table 中的单元格总数。我正在 运行 解决可能非常简单的问题,但我不只是得到: 达到最大值后停止向 table 添加数字 能够从不同的位置开始(例如,第一行的第三列)
我可以获得要填充的数字,但不会停在最大数字上。我已经尝试将迭代器放在 for 循环的所有级别,但我无法实现我的结果。
到目前为止,这是我的代码:
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')
我以为它会在 30 点停止,但它一直在继续!非常感谢您的帮助!
while 循环的一次迭代将遍历您创建的 整个 嵌套 for 循环。除了使用 while 循环,您还可以添加一个条件来打破这两个 for 循环。
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
如果 iterator
值大于或等于 max
,则可以通过向 break
添加条件来提高效率,以防止执行循环max
值传递后。
您可能想输入:
if iterator > max:
break
在你的两个 for 循环中