私は少しコードの問題があり、EclipseではなくIDLEで動作します、これを書くことができます:
if fields[9] != ('A' or 'D' or 'E' or 'N' or 'R'):
これの代わりに :
if fields[9] != 'A' and fields[9] != 'D' and fields[9] != 'E' and fields[9] != 'N' and fields[9] != 'R':
ありがとうございました。
つかいます not in
およびシーケンス:
if fields[9] not in ('A', 'D', 'E', 'N', 'R'):
タプルに対してテストするwhich Pythonは、便利で効率的に1つの定数として格納されます。セットリテラルを使用することもできます。
if fields[9] not in {'A', 'D', 'E', 'N', 'R'}:
ただし、Python( Python 3.2 以降)の最新バージョンのみが、これを不変定数として認識します。これは、新しいコードの最速オプションです。
これは1文字なので、文字列を使用することもできます。
if fields[9] not in 'ADENR':
in
演算子が必要です:
if fields[9] not in 'ADENR':
...
または、any
を使用できます。
if not any(fields[9] == c for c in 'ADENR'):
...
または、代わりにall
を使用することもできます。
if all(fields[9] != c for c in 'ADENR'):
...
余談として:
if x != ('A' or 'B' or 'C'):
本当に言っていることと同じです:
if x != 'A':
'A' or 'B' or 'C'
は'A'
と評価されるためです(試してみてください!)。理由は、or
では、pythonは最初の「偽でない」値(またはすべて偽である場合は最後の値)を返すからです。)偽でない場合、最初のものが返されます。