-2

だから今私は持っている

if request.POST['superPoints'].count('.') == False:

その後、他のコードに進みます。しかし、私が追加すると

if request.POST['cashTexts'].count('.') and request.POST['superPoints']('.') == False:

2 つのフォームに入力された内容に関係なく、常に else: ステートメントに移動します。では、2 つのものを数えようとすると、False 以外の何かが現れて流れを乱すのでしょうか? これらのステートメントの結合が機能しないのはなぜですか?

編集:
これを行うと機能します:

if request.POST['cashTexts'].count('.') == False:

だから、どの分野でも問題ないと思います。

編集:: !=True に設定すると機能します。正確な理由はわかりませんが、偽以外の何かを得ていたに違いありません。

4

2 に答える 2

2

試す:

if not request.POST['cashTexts'].count('.') and not request.POST['superPoints']:

あなたの問題は演算子の優先順位に関係していると思います。

あなたがやっていました:

test1 and test2 == False

これは次のように解釈されます。

test1 and (test2 == False)

これは次と同じです:

test1 == True and test2 == False
于 2012-04-16T13:27:15.630 に答える
2

Python で真実性をテストするための推奨される方法は次のとおりです。

if obj:
    pass

それ以外の:

if obj == True:
    pass

同様に虚偽について:

if not obj:
    pass

それ以外の:

if obj == False:
    pass

また、.count()string のメソッドは部分文字列の出現回数を返します。文字が文字列に少なくとも1回あるかどうかをテストしたいだけなら、これを使用してください:

if '.' in mystr:
    pass

文字が文字列に含まれていないかどうかをテストする場合は、これを使用します。

if '.' not in mystr:
    pass

どちらのフィールドにもドットがないかどうかをテストするには、次のようにします。

if '.' not in request.POST['cashTexts'] and '.' not in request.POST['superPoints']:
    pass
于 2012-04-16T13:50:55.027 に答える