目標は、ユーザーがブール論理ステートメントを効果的に作成し (開始されていない)、それらの式を保存し、それらにアクセスし (expression_menu)、それらを構築し (setup_table)、それらを評価し (true)、最後にそれらをテストする (in) プログラムを作成することです。別のモジュール)。
以上のことを考えると、これは私のスキルにとってかなり大きなプロジェクトです。私はすべてを整理する方法にこだわっています。属性を追跡する方が簡単かもしれないので、クラスの使用に移行したいと思うかもしれません...
ただし、すぐに私の問題は、ブール論理ステートメントをどのように転送するかということです.xが未定義であるため、明らかに29行目で構文エラーが発生します(コードのスニペットは11行目から15行目でのみ意味があります.
目標に合わせてコードを整理するにはどうすればよいですか
def setup_table(variables=2):
return (list(itertools.product(range(2), repeat = variables)))
def truth(variables=None,expression=None):
truth_table = []
for x in setup_table(variables):
if expression:
x.append(1)
else:
x.append(0)
truth_table.append(x)
return truth_table
def expression_menu():
expression = input('''
choose your expression:
1. if ((p and q) or (p or q)) and not(r or not q):
2. if (p or r) or (q and s):
3. if (p or r) and ( q or (p and s))
Expression: ''')
table = None
if int(expression) == 1:
table = truth(variables = 3, expression =((x[0] and x[1]) or (x[0] or x[1])) and not (x[
print(table)
if __name__ == "__main__":
import itertools
expression_menu()