2016-07-16 8 views
1

私はブール演算子 'と'、 'と'を含むランダムに生成された式を処理するためにSympyを使用しています。 。論理演算子 'not'の 'False'(0、False)のSympy出力を無効にする必要があります

'と' と 'または' うまく機能:

= 0

B = 1

およびb

aまたはb

が、所望の値に加えて、第2項 '偽' を導入 'ない'

(0、偽)

からBありません

Sympyによって処理された場合(ここで 'data'(下)は変数aとbを代用する実世界の値を提供します):

(algo_raw)

algo_sym.subs(データ)

algo_sym = sympy.sympify

algo_raw = 'Bではないが'

これは '偽' にチョーク。

2番目の用語 'False'を無効にして、目的の出力 '0'だけを取得する必要があります。

答えて

1

a, not bあなたはそう思わないと思います。 a0not bがtruthyさFalse1であり、結果が示すように

  1. a
  2. not b

:あなたは実際にを求め、かつ正しく、含む2つの項目のタプルを受けています真実のnotFalseである。

aが結果と同じ値になるということは、タプルの最初の項目として必要な結果を与えるわけではなく、2番目の項目を捨てる必要があるということです!それはちょうどaと書くことと同等です。

あなたがしたいことは、あなたの状態をa and not bと書いていると思います。

+0

ありがとうKindall。これは今や理にかなっています。私は間違いを見る。 Sympyが前と後の論理演算子を持つ完全な表現のコンテキストで 'not'を受け入れる唯一の方法だったので、 "a、not b"を適用しました。 私は元の目標に戻って、提案した内容を含めることが適切かどうかを知る必要があります。とても有難い! –

0

オペレータ&,|、および~をそれぞれand、or、およびforに使用すると、シンボリックブール式が得られます。 1と0の代わりにsympy.truesympy.falseを使用することをお勧めします。

関連する問題