簡體   English   中英

如何組織代碼/何時使用類?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM