Python 具有嵌套多个条件的if语句

Python 具有嵌套多个条件的if语句,python,if-statement,Python,If Statement,我试图在Python中的if语句中添加多个条件,如下所示: if (h9 == h1 or h9 == h2 or h9 == h3 or h9 == h4 or h9 == h5 or h9 == h6 or h9 == h7 or h9 == h8) and (h10 == h1 or h10 == h2 or h10 == h3 or h10 == h4 or h10 == h5 or h10 == h6 or h10 == h7 or h10 == h8) : do sth.

我试图在Python中的if语句中添加多个条件,如下所示:

if (h9 == h1 or h9 == h2 or h9 == h3 or h9 == h4 or h9 == h5 or h9 == h6 or h9 == h7 or h9 == h8) and (h10 == h1 or h10 == h2 or h10 == h3 or h10 == h4 or h10 == h5 or h10 == h6 or h10 == h7 or h10 == h8) :
     do sth.
基本上,h9和h10在同一时间处于相同的状态。 但是,这不起作用,并且会出现如下错误:

缩进错误:未缩进与任何外部缩进级别不匹配


问题出在哪里?

如果没有更多的上下文,我不知道缩进错误,但是下面是一些可以缩短if条件的方法:

lst = [h1, h2, h3, h4, h5, h6, h7, h8]
if h9 in lst and h10 in lst:
    pass
此外,还应该使用更具描述性的变量名

哦,如果你有很多元素并计划进行大量搜索,你可能会喜欢集合:

s = set([h1, h2, h3, h4, h5, h6, h7, h8])    # {h1, h2, h3, ...} in Python 3.x
if h9 in s and h10 in s:
    pass

在没有更多上下文的情况下,不知道缩进错误,但您可以做一些事情来缩短if条件:

lst = [h1, h2, h3, h4, h5, h6, h7, h8]
if h9 in lst and h10 in lst:
    pass
此外,还应该使用更具描述性的变量名

哦,如果你有很多元素并计划进行大量搜索,你可能会喜欢集合:

s = set([h1, h2, h3, h4, h5, h6, h7, h8])    # {h1, h2, h3, ...} in Python 3.x
if h9 in s and h10 in s:
    pass

这里没有缩进问题。
我想“做某事”里面有缩进问题。

这里没有缩进问题。 我认为“做某事”中存在缩进问题。

另一个选项是:

if any(h in {h1,h2,...} for h in (h9, h10)):
另一个选择是:

if any(h in {h1,h2,...} for h in (h9, h10)):

如果必须使用长条件,可以将整个If条件括在括号中,可以将其放在多行上,而不会出现缩进错误

a = 2
b = 2
if ((a == 1 or a == 2) and 
        (b == 1 or b == 2)):
    print "hello"

如果必须使用长条件,可以将整个If条件括在括号中,可以将其放在多行上,而不会出现缩进错误

a = 2
b = 2
if ((a == 1 or a == 2) and 
        (b == 1 or b == 2)):
    print "hello"

如果是缩进,我们需要更多的上下文…缩进和空白是。您需要确保选项卡位于正确的空格中,一个为您执行此操作的编辑器非常有用。如果是缩进,我们将需要更多的上下文…缩进和空白是必要的。您需要确保在正确的空格中有制表符,为您提供制表符的编辑器非常有用。@PlatinumAzure我使用的是set:O1search@PlatinumAzure:不,它在较新的Python版本中创建了一个集合。该死。对不起,我仍在使用2.6。@JBernardo:输入错误,意味着2.6A列表在这里会更快。为单个搜索操作构造一个集合是没有用的,这段代码在Servery迭代中重新创建该集合。@PlatinumAzure我正在使用集合:O1search@PlatinumAzure:不,它在较新的Python版本中创建了一个集合。该死。对不起,我仍在使用2.6。@JBernardo:输入错误,意味着2.6A列表在这里会更快。为单个搜索操作构造一个集合是没有用的,此代码在服务器迭代中重新创建该集合。稍快一点的是lst=set[h1,h2,h3,h4,h5,h6,h7,h8]@PhilCooper稍慢一点,我的朋友:-稍快一点的是lst=set[h1,h2,h3,h4,h5,h6,h7,h8]@PhilCooper稍慢一点,我的朋友:-