1

我试图在 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基本上它同时是两者的OR 条件h10
但是,这不起作用,并给出如下错误:

IndentationError: unindent does not match any outer indentation level

有什么问题?

4

4 回答 4

8

在没有更多上下文的情况下不知道缩进错误,但是您可以采取一些措施来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
于 2012-06-28T21:33:49.117 回答
4

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

a = 2
b = 2
if ((a == 1 or a == 2) and 
        (b == 1 or b == 2)):
    print "hello"
于 2012-06-28T21:39:54.833 回答
0

这里没有缩进问题。我想里面有缩进问题do sth.

于 2012-06-28T21:37:55.743 回答
0

另一种选择是:

if any(h in {h1,h2,...} for h in (h9, h10)):
于 2012-06-28T21:38:00.163 回答