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 に答える