Python中if-elif-else语句的正确格式

2024-05-23 13:25:10 发布

您现在位置:Python中文网/ 问答频道 /正文

请在Python2.7中找到下面的代码块。你知道吗

for i in range(len(p_routes)):
    if len(p_routes[i]) > 2 :
        if p_routes[i][2] == 'No Backup':   
            K = K + 1
            for z in range(len(p_routes[i])):
                nbup.write(K + 1 , z , p_routes[i][z])

        elif p_routes[i][0][0] == 'E' :
            L = L + 1
            for z in range(len(p_routes[i])):
                ex.write(L, z , (p_routes[i][z])

        elif p_routes[i][0][0] == 'G':
            M = M + 1
            for z in range(len(p_routes[i]))
                gh.write(M ,z, p_routes[i][z])

    else len(p_routes[i]) < 2:
        pass
        print "\nFor some reason. "

嗯,我的语法错误是elif p_routes[i][0][0] == 'G':。我不明白为什么会出现这个错误,因为我相信这行没有语法错误。你知道吗

exgh是在此代码块之前创建的两个excel工作表变量。p_routes是2度列表。格式类似于p_routes = [['prov1' , 'address1' , 'No Backup'] , ['prov2', 'address2', 'Back1', 'Back2' ]]

您可能已经理解了,内部列表长度是一个可变的大小。如有任何建议,将不胜感激。很抱歉问了这个愚蠢的问题,但是我做了大量的搜索,并以多种方式重新格式化了我的if..else块。但每次我都会犯这个错误。你知道吗

顺便说一下,前面的语法错误是L = L + 1。好笑!然后我通过L = int(L)改变了L的类型。现在,这个错误消失了。你知道吗


Tags: no代码inforlenif错误range
3条回答

对于语法错误,最好看一看前一行,以确保它也是正确的。由于错过了结束语),Python一直在下一行中寻找它。你知道吗

有很多地方可以让代码更干净一些。例如,当您可以在列表本身上迭代时,不必继续使用range(len(x))。你知道吗

希望您能发现以下想法很有帮助:

for route in p_routes:
    length = len(route)

    if length > 2 :
        if route[2] == 'No Backup':   
            K += 1
            for z in range(length):
                nbup.write(K + 1, z, p_routes[i][z])

        elif route[0][0] == 'E':
            L += 1
            for z in range(length):
                ex.write(L, z, (p_routes[i][z]))

        elif route[0][0] == 'G':
            M += 1
            for z in range(length):
                gh.write(M ,z, p_routes[i][z])

    elif length == 2:
        print "It is equal to 2"
    else:
        print "It must be less than 2"

注意,if x > 2后跟一个else,else表示值是<= 2。你知道吗

也可以按如下方式向变量添加一个:L += 1,这是L = L + 1的缩写。你知道吗

备注:

永远不要忘记用)关闭(

Else将执行if none of the above case condition was right,因此不应该给Else语句任何条件

别忘了:if else for.....

代码更改:

for i in range(len(p_routes)):
    if len(p_routes[i]) > 2 :
        if p_routes[i][2] == 'No Backup':   
            K = K + 1
            for z in range(len(p_routes[i])):
                nbup.write(K + 1 , z , p_routes[i][z])

        elif p_routes[i][0][0] == 'E' :
            L = L + 1
            for z in range(len(p_routes[i])):
                ex.write(L, z , (p_routes[i][z]))

        elif p_routes[i][0][0] == 'G':
            M = M + 1
            for z in range(len(p_routes[i])):
                gh.write(M ,z, p_routes[i][z])

    else :
        pass
        print "\nFor some reason. "

首先,正如Vignesh所指出的,您的错误实际上在前一行,因为您忘记关闭括号

其次,if、elif、else结构的else子句不需要检查。 这是我不久前制作的一个视频,介绍了python linked to relevant time中选择的工作原理

(可能不相关) 还要记住当前的逻辑,如果:len(p_routes[i])是2会发生什么?您当前只检查它是小于2还是大于2。你知道吗

相关问题 更多 >