python中布尔测试_Python:布尔值做加法巧解逻辑推理题

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

3d0756792d40

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

>>>True==1

True

>>>True==2

False

>>>False==0

True

3d0756792d40

还可以对布尔类型和整型之间进行类型转换。布尔类型转整型,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在胡说。

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

3d0756792d40

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

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是凶手

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值