打破一个for循环并继续其他代码

时间:2016-09-12 14:37:17

标签: python for-loop break

我目前有一张excel表格检查另一张excel表格中的某些数字。一旦找到匹配的单元格,我希望它继续回到第一个for循环。如果它找不到匹配的单元格,但找到它的前6位数,我希望它将其标记为已选中,然后再次移回第一个for循环。

这是怎么做到的?

以下是我的代码。我评论了我希望它回到我做的第一个for循环。

for row in range(sheet.nrows):
    cell = str(sheet.cell_value(row, 0))
    if fd.match(cell):
        for rows in range(sheet.nrows):
            windcell = str(windc_sheet.cell_value(rows, 0))
            if fd.match(windcell):
                if cell == windcell:
                    outputsheet.write(row, 1, ' ')
                    #GO BACK TO FIRST FOR LOOP

                else:
                    sixdig = cell[0:6]
                    sixdigwind = windcell[0:6]
                    if sixdig == sixdigwind:
                        outputsheet.write(row, 1, 'Check')
                        #GO BACK TO FIRST FOR LOOP

    else:
        sixdig = cell[0:6]
        for rows in range(sheet.nrows):
            windcell = str(windc_sheet.cell_value(rows,0))
            sixdigwind = windcell[0:6]
            if sixdig == sixdigwind:
                outputsheet.write(row, 1, 'Check')

1 个答案:

答案 0 :(得分:2)

只需使用break语句即可。它会让您摆脱for循环或while循环。

来自Python文档:

  

break只能在语法上嵌套在for或while循环中,但不能   嵌套在该循环中的函数或类定义中。 终止了   最近的封闭循环,如果循环有一个,则跳过可选的else子句。   如果for循环被中断终止,则循环控制目标保持其当前   值。当break通过finally子句控制出try语句时,   在终止循环之前执行finally子句。

(强调我的)

for row in range(sheet.nrows):
    cell = str(sheet.cell_value(row, 0))
    if fd.match(cell):
        for rows in range(sheet.nrows):
            windcell = str(windc_sheet.cell_value(rows, 0))
            if fd.match(windcell):
                if cell == windcell:
                    outputsheet.write(row, 1, ' ')
                    break  # TERMINATE ENCLOSING FOR LOOP

                else:
                    sixdig = cell[0:6]
                    sixdigwind = windcell[0:6]
                    if sixdig == sixdigwind:
                        outputsheet.write(row, 1, 'Check')
                        break  # TERMINATE ENCLOSING FOR LOOP

    else:
        sixdig = cell[0:6]
        for rows in range(sheet.nrows):
            windcell = str(windc_sheet.cell_value(rows,0))
            sixdigwind = windcell[0:6]
            if sixdig == sixdigwind:
                outputsheet.write(row, 1, 'Check')