第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > python中布尔测试_Python:布尔值做加法巧解逻辑推理题

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

时间:2019-03-28 17:06:42

相关推荐

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

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。