2016-10-01 3 views
0

検索結果を見つけるためにIF NOTをまとめてみようとしています。 IfスタックIF NOT

ddが一致しない場合は、2番目のシナリオを試してみたいです。それが一致していなければ、何も出てこないように見せて、ファイルに保存されるべき行を設定する必要があります。それが私が必要とする以上の試合が出てくるなら、ee =(re.findall ...)を使って検索の第2レベルを見つけてください。

すべてが動作していた見つけるが、その後、私はので、私はプログラムにそれを追加しようとしていると私は上で戻ってくる無効な構文を得続けるために調べる必要があり、別の可能なものを見つけました:二

if not dd: 

にこれはその一つです私を越えて道がある。私はVB6を使用するときに積み重ねてこの問題を抱えることには慣れていません。 Pythonは少し違ったやり方で処理されているようです。

+0

他にも何をしようとしているかによって、ロジックを単純化する方が簡単かもしれません。覚えておいてください:「Aではなく、Bでない」は「not(AまたはB)」と同じです。詳細については、[DeMorgan's Theory](http://hyperphysics.phy-astr.gsu.edu/hbase/electronic/demorgan.html)を参照してください。 – Basic

+0

条件2を設定しようとする前に条件1をテストしたいと思っています。条件1が存在する場合、条件2は存在しない。したがって、私は使用しようとしている順序と手順を実行します。 – confused

+0

すべてのことを1つのステートメントで行うことができます。 Python演算子の短絡を使用します。ブロックが実行されないようにする条件が見つかると、それは停止します。あなたが持っているのは... 'something()とsomething_else():' ...実行中に、 'something()'が返す'False'、' something_else() 'は決して実行/テストされません。私はあなたのやっていることを想定してここに関数を入れました。プレーン変数はまったく同じように機能します。 http://stackoverflow.com/questions/2580136/does-python-support-short-circuitingを参照してください。そしてウィキのリンク:https://en.wikipedia.org/wiki/Short-circuit_evaluation – Basic

答えて

0

インデントは、Pythonでは構文上重要です。 beginendまたは{}のようなトークンによってブロックが決定される言語とは異なり、Pythonブロックはインデントと献辞によって決まります。

このように、Pythonコードを任意にインデントすることはできません。 Pythonは、その行より上に字下げされた行に出会うたびに、その行が新しいブロックの最初の行になることを期待しています。あなたが持っている問題は、最初のifステートメントの中に、ブロックdd = ...でそのブロックのインデントレベルを既に設定していて、次のifステートメントをさらにインデントしたのと同じインデントレベルにある必要があります。

2番目のif not dd:行の余分なインデントを削除すると、構文エラーが発生しなくなります。

+0

私はちょうど余分なインデントを削除し、私はまだ同じエラーを取得しています: – confused

+0

あなたはまた、前の行に匹敵しない括弧これはおそらく、あなたのテキストエディタが持っていなければならないよりも、次の行をインデントした理由です。 –

+0

'dd =(re.findall ...'を 'dd = re.findall ...'に置き換えます。 –