一、题目
在某次研讨会的中间休息时间,3名与会者根据王教授的口音对他是哪个省市的人判断如下:
甲:王教授不是苏州人,是上海人。
乙:王教授不是上海人,是苏州人。
丙:王教授既不是上海人,也不是杭州人。
听完这三人的判断后,王教授笑着说,你们三人中有一人说的全对,有一人说对了一半,另一人说的全不对,试判断王教授到底是哪里人。
二、代码实现
ls=[0,1]
#p表示王教授是苏州人,表示王教授是上海人,r表示王教授是杭州人
for p in ls:
for q in ls:
for r in ls:
if (p==1 and q==0 and r==0) or (p==0 and q==1 and r==0)\
or (p==0 and q==0 and r==1): #王教授只能来自一个地方
B1 = (not p) and q # 甲的判断全对
B2 = ((not p) and (not q)) or (p and q) # 甲的判断对一半
B3 = p and (not q) # 甲的判断全错
C1 = p and (not q) # 乙的判断全对
C2 = (p and q) or ((not p) and (not q)) # 乙的判断对一半
C3 = (not p) and q # 乙的判断全错
D1 = (not q) and (not r) # 丙的判断全对
D2 = ((not q) and r) or (q and (not r)) # 丙的判断对一半
D3 = q and r # 丙的判断全错
E = (B1 and C2 and D3) or (B1 and C3 and D2) or (B2 and C1 and D3) \
or (B2 and C3 and D1) or (B3 and C1 and D2) or (B3 and C3 and D1)
if E == 1:
print("王教授是苏州人:{},王教授是上海人:{},王教授是杭州人:{}".format(p, q, r))
代码运行结果:
运行结果表明,王教授是上海人。
目录