离散数学习题2.6:王教授是哪里人?

在某次研讨会的中间休息时间,三名与会者根据王教授的口音对他是哪个省市的人判断如下:

        甲:王教授不是苏州人,是上海人。

        乙:王教授不是上海人,是苏州人。

        丙:王教授既不是上海人,也不是杭州人。

听完这三人的判断后,王教授笑着说,你们三人中有一人说得全对,有一人说对了一半,另一人说得全不对,试用逻辑演算分析王教授到底是哪里人。

Python程序实现:

'''在某次研讨会的中间休息时间,三名与会者根据王教授的口音对他是哪个省市的人判断如下:

甲:王教授不是苏州人,是上海人。

乙:王教授不是上海人,是苏州人。

丙:王教授既不是上海人,也不是杭州人。

听完这三人的判断后,王教授笑着说,你们三人中有一人说得全对,有一人说对了一半,另一人说得全不对,试用逻辑演算分析王教授到底是哪里人。
'''

'''
设命题:
    p:王教授是苏州人
    q:王教授是上海人
    r:王教授是杭州人
    '''
for p in range(2):
    for q in range(2):
        for r in range(2):
            # 以下三行表示p,q,r不可能同时为真的情况
            if (p == 1 and q == 1): continue
            if (p == 1 and r == 1): continue
            if (q == 1 and r == 1): continue

            Jia = (not p) and q     #甲的判断
            Yi = p and (not q)      #乙的判断
            Bing = (not q) and (not r)      #丙的判断

            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来表示
            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 C2 and D1)

            if E==1:
                if p == 1:
                    print('王教授是苏州人')
                elif q == 1:
                    print('王教授是上海人')
                else:
                    print('王教授是杭州人')

结果如下:

D:\lenrnpython\venv\Scripts\python.exe D:/lenrnpython/王教授是哪里人.py
王教授是上海人

Process finished with exit code 0
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值