[英]how to organize code / when to use classes?
目標是創建一個程序,該程序將有效地使用戶創建布爾邏輯語句(未啟動),存儲這些表達式,訪問它們(expression_menu),構建它們(setup_table),然后對其求值(真實)並最終對其進行測試(在另一個模塊)。
考慮到所有這些,這對我的技能來說是一個相當大的項目。 我堅持如何組織一切。 我感覺我可能想轉向使用類,因為跟蹤屬性可能更容易...
但是,立即出現的問題是,如何在布爾邏輯語句之間進行傳遞,顯然在第29行上,我會遇到語法錯誤,因為x是未定義的(代碼段僅在第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()
您可以將布爾表達式轉換為函數。
所以:
table = truth(variables = 3, expression = lambda x: (x[0] and x[1]))
要么:
def expression(x):
return x[0] and x[1]
table = truth(variables = 3, expression = expression)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.