python算法:谁是小偷?

一,for循环:

1,功能:重复执行同一段代码
语法:

for index in range(n): 
    # 循环体代码

index : 用来依次接收可迭代对象中的元素的变量名
range()函数:负责返回整数序列

流程图:

2,应用

range可以同时指定start 和stop,用for遍历并打印

1
2
3
4
# 指定 start和stop
# print的参数 end=" " 用来使打印不换行
for num in range(3,9):
    print(num, end=" ")

运行结果:

3 4 5 6 7 8 

说明:刘宏缔的架构森林—专注it技术的博客,
网址:https://imgtouch.com
本文: https://blog.imgtouch.com/index.php/2024/03/16/python-suan-fa-shui-shi-xiao-tou/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,谁是小偷的题目与分析

1,题目

警察局抓了ABCD四名小偷嫌疑人,其中有一人是真正的小偷,审讯时,他们的
供词是这样的:

A:我不是小偷
B:C才是小偷
C:D才是小偷
D:C在胡说八道,冤枉好人

已知,三人说了真话,一人说了假话,到底谁是小偷?

2,分析:

我们假定x为小偷,那么x取值可能分别为A、B、C、D
当x取某个值时满足下面四个表达式中的三个真一个假:

x!=A,x=C,x=D,x!=D

x=A时,统计下四个表达式,看是否满足三真一假
x= B时,统计下四个表达式,看是否满足三真一假
x=C时,统计下四个表达式,看是否满足三真一假
x=D时,统计下四个表达式,看是否满足三真一假

三,编写代码

1
2
3
4
5
6
7
8
9
# 使用for循环
# 依次对嫌疑人做判断
list1 = ['A', 'B', 'C', 'D', ]
for x in list1:
    # 如果四人的证词满足三真一假,
    # 那么证词链相互认证,小偷现身
    num = (x != 'A') + (x == 'C') + (x == 'D') + (x != 'D')
    if num == 3:
        print('小偷是', x)

运行结果:

小偷是 C
posted @ 2024-05-15 10:35  刘宏缔的架构森林  阅读(112)  评论(0编辑  收藏  举报