how to organize code / when to use classes?
<p>The goal is to create a program which will effectively let the user create boolean logic statements (not started ), store those expressions, access them (expression_menu), build them (setup_table) and then evaluate them (truth) then finally test them (in another module).</p>

<p>Given all that, which is a fairly large project for my skills. I'm stuck on how to organize everything. I feel like i might want to be moving towards using classes because it might be easier to keep track of attributes...</p>

<p>Immediately however my problem is that how to transfer around the boolean logic statements, obviously on line 29 i'll get a syntax error because x is undefined (the snippet of code only makes sense in lines 11 through 15. </p>

<p>How can i organize my code here to better suit my goal</p>

<pre><code>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()
</code></pre>
