Python中正确的if..else语法

Python中正确的if..else语法,python,if-statement,indexing,operand,Python,If Statement,Indexing,Operand,在python代码中,我试图实现if..else语句。见下文: if index[y] == index[x]: continue else index[y] != index[x] indexdn = indexd indadd= index[y]-index[x] indexdn[:,y]=indexdn[:,y]+ indadd

在python代码中,我试图实现if..else语句。见下文:

     if index[y] == index[x]:
            continue
            else index[y] != index[x]
                indexdn = indexd
                indadd= index[y]-index[x]
                indexdn[:,y]=indexdn[:,y]+ indadd
                index[y,:]=-indexdn[:,y]
                indexdn[y,y]=0
然而,无论我尝试用多少种不同的方式来写else,索引[x]不等于索引[y],我在返回这一行时都会得到一个语法错误。我已尝试使用else、elif和for not操作数!=“不是”。使用不相等的操作数编写Python语句以避免收到语法错误的正确方法是什么?

正确的语法是

if condition:
    # stuff
elif other:
    # stuff
elif some_other:
    # stuff
else:
    # stuff

请注意,else没有得到任何显式条件,如果上述条件均不成立,则为“包罗万象”。

只需修复缩进,将else更改为elif并添加缺少的冒号:

if index[y] == index[x]:
    continue
elif index[y] != index[x]: # indentation and colon
    indexdn = indexd
    indadd = index[y] - index[x]
    indexdn[:,y] = indexdn[:,y]+ indadd
    index[y,:] = -indexdn[:,y]
    indexdn[y,y] = 0

我认为你错过了两件重要的事情。监造及2。冒号

if index[y] == index[x]:
    continue
else:
    indexdn = indexd
    indadd= index[y]-index[x]
    indexdn[:,y]=indexdn[:,y]+ indadd
    index[y,:]=-indexdn[:,y]
    indexdn[y,y]=0

按照你给出的例子,在else中不需要比较。

我猜你在循环中使用这个,但是如果你不使用,你应该使用关键字pass来代替continue

if index[y] == index[x]:
    pass
elif: # indentation and colon
    indexdn = indexd
    indadd = index[y] - index[x]
    indexdn[:, y] = indexdn[:, y] + indadd
    index[y, :] = -indexdn[:, y]
    indexdn[y, y] = 0
但是,如果它不在循环中,您只需要:

if index[y] != index[x]:
    indexdn = indexd
    indadd = index[y] - index[x]
    indexdn[:, y] = indexdn[:, y] + indadd
    index[y, :] = -indexdn[:, y]
    indexdn[y, y] = 0

缩进在Python中很重要,与大多数其他语言不同。if和else需要在同一级别缩进才能有效。您是否尝试了?你的索引看起来也很时髦。if..else麻烦放在一边,这部分有用吗?你可以在回答中加入使用elif和else的区别:if.@heltonbiker有一篇很好的文章,所以我会遵守这一点是的,我的评论只是提醒你,在少数情况下,你实际上需要嵌套的if,而不是单一的、开关/案例式的条件集,因为它们在概念上是不同的。而且,由于这两个测试是互斥的,OP可以使用else进行straigth,或者甚至不需要额外的测试。@heltonbiker,如果有更多的子句呢?如果有额外的条件呢。然后会发生不必要的执行。@heltonbiker在大多数情况下,它们应该是相互排斥的,但它们可能不是,例如,@Brandon Ginley-请告诉我是否还有其他作用域需要在python中实现if…else。