目录
前言
离散数学(第2版)
使用python实现命题逻辑等值演算应用题。
一、王教授是哪里人
1.题目
在某次研讨会的中间休息时间,3名与会者根据王教授的口音对他是哪个省市的人判断如下:
甲:王教授不是苏州人,是上海人。
乙:王教授不是上海人,是苏州人。
丙:王教授既不是上海人,也不是杭州人。
听完这3人的判断后,王教授笑着说,你们3人中有一人说得全对,有一人说对了一半,另一人说得全不对。分析王教授到底是哪里人。(书本P25)
2.代码实现
代码如下:
# p:是苏州人 q:是上海人 r:是杭州人
ls = [0, 1]
for p in ls:
for q in ls:
for r in ls:
A1 = not p and q
A2 = (not p and not q)or(p and q)
A3 = p and not q # 甲的话的三种情况
B1 = p and not q
B2 = (p and q)or(not p and not q)
B3 = not p and q # 乙的话的三种情况
C1 = not q and not r
C2 = (not q and r)or(q and not r)
C3 = q and r # 丙的话的三种情况
if ((A1 and B2 and C3) or (A1 and B3 and C2) or (A2 and B1 and C3) or\
(A2 and B3 and C1) or (A3 and B1 and C2) or (A3 and B2 and C1)) == 1\
and p+q+r == 1: # 成立一项
if p == 1:
print('王教授是苏州人.')
if q == 1:
print('王教授是上海人.')
if r