多个try有什么区别:除了:函数和组合它们?

时间:2017-08-16 23:54:35

标签: python python-2.7 python-3.x difference

我有两个代码,但他们给出了不同的答案,有人可以告诉我差异吗?

这是第一个:

number_in_red=[]
for i in range(1, sheet.max_row +1):
    try:
        if 95<=int(sheet.cell(row=i,column=3).value[1:4])<=289:
            number_in_red.append(i)
    except ValueError:
        try:
            if 289>=int(sheet.cell(row=i,column=3).value[2:5])>=95:
                number_in_red.append(i)
        except ValueError:
            try:
                if 95<=int(sheet.cell(row=i,column=3).value[1:3]):
                    number_in_red.append(i)
            except ValueError:
                try:
                    if int(sheet.cell(row=i,column=3).value[2:4])>=95:
                        number_in_red.append(i)
                except ValueError:
                    pass

这第二个怎么不同?

number_in_red=[]
for i in range(1, sheet.max_row +1):
    try:
        if 95<=int(sheet.cell(row=i,column=3).value[1:4])<=289 or 289>=int(sheet.cell(row=i,column=3).value[2:5])>=95:
            number_in_red.append(i)
    except ValueError:
        try:
            if 95<=int(sheet.cell(row=i,column=3).value[1:3]) or int(sheet.cell(row=i,column=3).value[2:4])>=95:
                number_in_red.append(i)
        except ValueError:
            pass

1 个答案:

答案 0 :(得分:0)

在第一个代码段中,如果value存在导致异常的问题(例如,它将是导致value[1:4]引发异常的字符),代码将继续并尝试评估int()与第二段摘要,它会“跳”到评估value[2:5]