My question is simple: "how to build a dynamic growing truth table in python in an elegant way?"
for n=3
for p in False, True:
for q in False, True:
for r in False, True:
print '|{0} | {1} | {2} |'.format(int(p),int(q), int(r))
for n=4
for p in False, True:
for q in False, True:
for r in False, True:
for s in False, True:
print '|{0} | {1} | {2} | {3}'.format(int(p),int(q), int(r), int(s))
I would like to have a function which takes n as a parameter and builds up the table, it is not necessary to print the table, returning a data structure representing the table is fine also.
Use itertools.product()
:
table = list(itertools.product([False, True], repeat=n))
Result for n = 3
:
[(False, False, False),
(False, False, True),
(False, True, False),
(False, True, True),
(True, False, False),
(True, False, True),
(True, True, False),
(True, True, True)]