【问题标题】:Proper if..else syntax in PythonPython 中的正确 if..else 语法
【发布时间】:2015-08-18 01:37:12
【问题描述】:

在我的 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 index[x] is not equal to index[y],我都会在返回此行时遇到语法错误。我尝试过使用 else、elif,对于非操作数,!= 和 'is not'。使用“不等于”操作数编写 Python 语句以使我不会收到语法错误的正确方法是什么?

【问题讨论】:

  • 缩进在 Python 中很重要,与大多数其他语言不同。 if 和 else 需要在同一级别缩进才有效。
  • 你试过tutorial吗?您的索引也看起来很时髦。 if..else 麻烦不说了,那部分有用吗?

标签: python if-statement indexing operand


【解决方案1】:

正确的语法是

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

请注意,else 没有得到任何明确的条件,如果上述条件都不是True,则它是包罗万象的。

【讨论】:

  • 您可以在答案中添加使用 elifelse: if 的区别。
  • @heltonbiker here 有一篇很好的文章,所以我会顺其自然
  • 是的,我的评论只是为了提醒您实际上想要嵌套 ifs 而不是单个的、类似 switch/case 的条件集的少数情况,因为它们在概念上是不同。
【解决方案2】:

只需修正缩进,将 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

【讨论】:

  • 另外,由于这两个测试是互斥的,OP 可以直接使用else,甚至根本不需要额外的测试。
  • @heltonbiker 如果还有更多条款?如果有额外的条件怎么办。然后会发生不需要的执行。
  • @heltonbiker 在大多数情况下,它们应该是互斥的,但也可能不是。以See this 为例。
【解决方案3】:

我认为你错过了 2 个重要的事情 1. 意图和 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 中不需要比较。

【讨论】:

  • @Brandon Ginley - 如果您需要在 python 中实现 if...else,请告诉我。
【解决方案4】:

我猜你会在循环中使用它,但如果你不这样做,你应该使用关键字 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

【讨论】:

    猜你喜欢
    • 2011-01-24
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多