4

(予測不可能な) ユーザー入力に基づいて、ブール式を作成しようとしています。適切に見える文字列を作成していることに気付きましたが、機能しません。私は python.org、Google、Stackoverflow を見てきましたが、ここで何が問題なのかを見つけることができませんでした。

コードの例:

    print stringDing
    newVariable = stringDing.replace('False','0')
    print newVariable
    print bool(newVariable)

これからの出力:

    False or False or False
    0 or 0 or 0
    True

それでも、文字列が python に貼り付けられると、python は期待どおりに応答します。

    >>> False or False or False
    False

ユーザーは「OR」、「AND」、および括弧を追加できるため、これを文字列として作成する必要があると思います。これらは適切な場所に収まる必要があります。

どうやって進める?

4

2 に答える 2

6

空でない文字列を解釈すると、bool常に と評価されTrueます。すなわち:

print bool("False") # True
print bool("0") # True

これは、str が反復可能なオブジェクト ( 、listsetなどdict) であるためです。True空でない場合、すべての反復可能なオブジェクトは であると見なされます。Astrは iterable であり、その文字を反復します。sこれは、文字列が空かどうかをテストする場合などに便利です。そのような場合、次のように書くことができます:

if s:
  # do something with non-empty string s.

ただし、文字列で表される式を評価するeval場合は、次のように呼び出します。

print eval("False") # False
print eval("0") # 0
print bool(eval("0")) # False
于 2013-06-16T13:54:37.640 に答える
0

Pythonプロンプトで評価される方法を評価したい場合は、単に行うことができますeval(stringDing). 論理式の場合は bool を返します。

于 2013-06-16T13:53:03.660 に答える