Python 如何计算真值表以显示诸如';p和q';?

Python 如何计算真值表以显示诸如';p和q';?,python,Python,我需要用Python编写一些代码,为以下语句生成一个真值表:p和q,p或q,如果p那么q,p如果且仅当q (T T T) (T F F) (F T F) (F F F) 下面是我已经写过的一些代码,但我不确定从这里可以走到哪里 def getSym(x): if x: return 'T' else: return 'F' values = [True, False] for p in values: for q in values:

我需要用Python编写一些代码,为以下语句生成一个真值表:p和q,p或q,如果p那么q,p如果且仅当q

(T T T)
(T F F)
(F T F)
(F F F)
下面是我已经写过的一些代码,但我不确定从这里可以走到哪里

def getSym(x):
    if x:
        return 'T'
    else:
        return 'F'

values = [True, False]

for p in values:
    for q in values:
        print(getSym(p), getSym(q), getSym(p and q))
(T T T)
(T F F)
(F T F)
(F F F)
我得到:

(T T T)
(T F F)
(F T F)
(F F F)

但是我不知道如何得到最后一个输出,应该是(tftf)

你应该应用你在数学逻辑课上学到的东西,在你已经实现的东西旁边,我为
'p或q'
添加了真值表:

(T T T)
(T F F)
(F T F)
(F F F)
def getSym(x):
    if x:
        return 'T'
    else:
        return 'F'

values = [True, False]

print('and')
for p in values:
    for q in values:
        print(getSym(p), getSym(q), getSym(p and q))

print('or')
for p in values:
    for q in values:
        print(getSym(p), getSym(q), getSym(p or q))
对于
'if p then q'
'p if且仅当q'
,使用以下等效值:

(T T T)
(T F F)
(F T F)
(F F F)
  • 如果p,那么q是
    而不是p或q
  • p当且仅当q等价于
    如果p那么q,如果q那么p
    ,那么应用前面的等价,您将能够实现它
提示:

(T T T)
(T F F)
(F T F)
(F F F)
  • getSym(不是p或q)
  • getSym((非p或q)和(非q或p))
观察: 您可以改进
getSym
功能,如下所示:

(T T T)
(T F F)
(F T F)
(F F F)
def getSym(x):
    return 'T' if x else 'F'

你走的方向是对的。您已经为和打印了真相表

(T T T)
(T F F)
(F T F)
(F F F)

(T T T)
(T F F)
(F T F)
(F F F)
最后一列是和的真值表

(T T T)
(T F F)
(F T F)
(F F F)
类似地,您可以打印其他逻辑操作的真值表。只需相应地更改打印报表

(T T T)
(T F F)
(F T F)
(F F F)
例如,或者,它应该是

(T T T)
(T F F)
(F T F)
(F F F)
print(getSym(p), getSym(q), getSym(p or q))

(tftf)
应该是什么?只有2个输入和1个输出,你怎么能有4个值?你的结果就是完整的真值表。@eatprawns77,我为你的问题添加了一个答案。