Python编程判断谁是小偷

编程入门 行业动态 更新时间:2024-10-27 09:41:26

Python编程判断<a href=https://www.elefans.com/category/jswz/34/1767126.html style=谁是小偷"/>

Python编程判断谁是小偷

谁是小偷

‎小区发生盗窃案,有四个人嫌疑最大,警察找来讯问。‌

‎A说:不是我。‌

‎B说:是C。‌

‎C说:是D。‌

‎D说:他冤枉人。‌

‎四人中有一人说了假话,编程分析谁是小偷。

        此题主要考察抽象概括能力、逻辑思维能力和数据处理能力,将题目总结概括为数学问题是抽象概括能力,将数学问题剖析分解为运算公式为逻辑思维能力,将运算公式变换为Python程序为数据处理能力。

        乍一看题目觉得高深莫测,但把题目分析拆解后会有一种“山重水复疑无路,柳暗花明又一村”的感觉。首先,根据题目描述分析可得:1)四人中有一人说了假话,说明A、B、C、D说的话中只有一人说的是假话,其他都是真话,三人的真话之间不能产生矛盾;2)有四个嫌疑人,只有一个小偷,说假话的一定是小偷。这是抽象概括能力。

        四人中三人说的是真话,一人说的是假话,那么他们四个人的话加起来应该是:真+真+真+假,转换为逻辑语言就是True+True+True+False,也相当于1+1+1+0=3,此可作为判断谁是小偷的条件。接下来就是将四个人的话转换为对应的逻辑表达式。‎“A说:不是我”的意思是:“A说A不是小偷”,也就是“小偷不是A”,如果小偷是thief,那么转换为逻辑表达式就相当于“thief!=A”。‎“B说:是C”的意思是“B说小偷是C”,转换为逻辑表达式就相当于“thief==C”。“‎C说:是D”的意思是“C说小偷是D”,转换为逻辑表达式就相当于“thief==D”。“‎D说:他冤枉人”的意思是“D说C冤枉自己,自己不是小偷”,转换为逻辑表达式就相当于“thief!=D”。那么判断谁是小偷的问题就转换为了判断表达式(thief!=A)+(thief==C)+(thief==D)+(thief!=D)==3成立的条件问题,thief的取值范围是A、B、C、D中的一个。这是逻辑思维能力。

       thief的取值范围是A、B、C、D中的一个,如何在Python中为thief规定取值范围,可以联想到ord()和chr()函数,ord('A')=65,ord('B')=66,ord('C')=67,ord('D')=68,chr(65)='A',chr(66)='B',chr(67)='C',chr(68)='D',可以使用range()函数为thief规定取值范围,程序编写如下:

for thief in range(65,69):
    if ((thief!=65)+(thief==67)+(thief==68)+(thief!=68))==3:
        thief=chr(thief+64)
        print("小偷是{}".format(thief))

为了程序简便,也可将thief的取值范围改为range(1,5),修改后程序编写如下:

for thief in range(1,5):
    if ((thief!=1)+(thief==3)+(thief==4)+(thief!=4))==3:
        thief=chr(thief+64)
        print("小偷是{}".format(thief))

‌ 结果都为

 

更多推荐

Python编程判断谁是小偷

本文发布于:2024-02-11 03:27:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1678890.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:谁是   小偷   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!