1
目的は、ユーザーがブール論理ステートメント(開始されない)を作成し、それらの式を保存し、それらにアクセスし(expression_menu)、それらを構築して(setup_table)、それらを評価し(真実)、最終的にそれらをテストできるようにするプログラムを作成することです。 (別のモジュールで)。コードの整理方法/クラスの使用方法
これは私のスキルにとってかなり大きなプロジェクトです。私はすべてを整理する方法に立ち往生しています。私はクラスを使用する方に移動したいと思うかもしれません。なぜなら、属性を追跡する方が簡単かもしれないからです...
すぐに私の問題は、論理的な論理ステートメント、 xが定義されていないので、LL構文エラーを取得します(コードのスニペットは15
を通してライン11のセンスがどのように私はあなたが作ることができる
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()
。いくつかのテストを書いて渡し、コードをできるだけきれいにしてください。構造的な優雅さを心配しないでください。明白なパターンが見えたら、地獄のような[refactor](http://en.wikipedia.org/wiki/Code_refactoring)。 – ckhan