IT培训

牛耳教育报名热线

400-0731-162

您的当前位置:首页 > 新闻资讯

Python:布尔值做加法巧解逻辑推理题

发布日期:2021-01-15 发布人: 原创 浏览次数:74

在Python的官方文档中写到:Python中的布尔值是作为整数的子类实现的。

在Python语言中布尔类型的True和False与整型的1和0完全一样。


>>>True==1


True


>>>True==2


False


>>>False==0


True


还可以对布尔类型和整型之间进行类型转换。布尔类型转整型,True转换成1,False转换成0。整型转布尔类型,0转换成False,除了0以外的数字都转为True。


>>>int(True)


1


>>>int(False)


0


>>>bool(1)


True


>>>bool(2)


True


>>>bool(0)


False


>>>bool(-1)


True

布尔类型也可以做算数运算,在计算的工程中隐式的将布尔类型转为整型。


>>>True+True


2


>>>5-True


4


>>>False*100


0


>>>1/False


ZeroDivisionError:divisionbyzero


有了以上的基础知识,我们就可以用Python解一道“谁是凶手”的推理题。题目如下:


日本发生谋杀案,警察通过排查确定杀人凶手必为四个嫌疑犯之一,以下为供词:


A说:不是我。


B说:是C。


C说:是D。


D说:C在胡说。


三人说真话,一人说假话。谁是凶手?

首先我们列出来四个嫌疑人供词的关系表达式。


A说:murder!='A'


B说:murder=='C'


C说:murder=='D'


D说:murder!='D’


然后把真正的凶手代入murder变量,4个供词表达式相加应该等于3。因为题目说“三人说真话,一人说假话”。我们可以用一个循环来测试所有的嫌疑人。


>>>formin['A','B','C','D']:


if(m!='A')+(m=='C')+(m=='D')+(m!='D')==3:


print(f'{m}是凶手')


C是凶手


有了这种通用的枚举方法,我们就可以把烧脑的“谁是凶手”推理题,转化成可以让电脑帮我们解决的简单问题。

我要报名
*
*
微信客服扫一扫咨询微信客服
在线咨询
电话咨询 电话咨询:400-0731-162
微信公众号
返回顶部