Python 将文本添加到表格中,最多添加到某个数字

Python 将文本添加到表格中,最多添加到某个数字,python,python-docx,Python,Python Docx,我有一个表,我想用数字1到最大值填充,其中最大值可以是大于1但最多为表中单元格总数的任何数字。我遇到的问题可能真的很容易,但我不仅仅是: 一旦达到最大值,停止向表中添加数字 能够从不同的位置开始(例如,第一行中的第三列) 我可以得到要填充的数字,但不能停留在最大数字。我已经尝试将迭代器放在for循环的所有级别,但我无法实现我的结果 以下是我目前的代码: from docx import Document document_name = 'table_loop_test.docx' docume

我有一个表,我想用数字1到最大值填充,其中最大值可以是大于1但最多为表中单元格总数的任何数字。我遇到的问题可能真的很容易,但我不仅仅是: 一旦达到最大值,停止向表中添加数字 能够从不同的位置开始(例如,第一行中的第三列)

我可以得到要填充的数字,但不能停留在最大数字。我已经尝试将迭代器放在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')
来自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
语句——一个用于中断内部循环,另一个用于中断外部循环。