私はちょうどPythonの学習を始めました。命題計算式と値をとるプログラムを作るための課題があります入力としてX、Y、Z(TrueまたはFalse)を指定します。次に、答えが真か偽かを記述する必要があります。数式は、 - (not)、&(および)、v(または)の3つの操作のみで構成する必要があります。数式の変数はX、Y、Zのみであり、すべてが0回以上現れます。可能式の文字列を論理式(not、and、or)で置き換える方法はありますか
例:
- Y
- - ( - (YvX)& Y)
- -X-(二重陰性)
- -Z & Z
変数の値を指定する必要がありますこのようなバイナリで: 010(X = f、Y = t、Z = f)。変数の値のために、私はこれを行うには良い方法ですが、これはまだ動作する必要があることかなり確信してこの
value = input("Value: ")
X = value[0]
Y = value[1]
Z = value[2]
if X == "0":
X = False
elif X = "1":
X = True
else:
print("False input")
if Y == "0":
Y = False
elif Y = "1":
Y = True
else:
print("False input")
if Z == "0":
Z = False
elif Z = "1":
Z = True
else:
print("False input")
をしました。問題は数式を読むことにあります。私の考えは、記号( - 、&、v)をnot、and、orに置き換えることでした。次のようなもの:
a = input()
print(a.replace("v", or))
しかし、これを行うことはできないので、どうすればいいのかわかりません。
を**インプレースで変更することはできません。つまり、 '' v "'を文字列 ''や '' *で置き換える必要があります。演算子ではなく、識別子ではないのでそのように使うことはできません。 – jonrsharpe
まず、Pythonのeval/codeインタープリタを使うべきかどうか、それとも数式パーサーを書くのかどうかを知っておくといいでしょう。それでは、あなた自身で協会や優先順位付けなどを解決する必要があります。 – Jeronimo