首页 > 编程语言 >只有一个人说了真话!通解代码——python

只有一个人说了真话!通解代码——python

时间:2023-04-10 12:04:11浏览次数:44  
标签:真话 python list dic num ddo 通解 true

不管几个人说了这话,代码逻辑都是一样的,无非参数不同。

大老鼠发现家里的奶酪少了一大块,审问四只小老鼠ABCD,其实只有一只老鼠偷吃了奶酪。

A说: 我没吃。

B说: 是C吃的。

C说: 肯定是D吃的。

D说: C在冤枉我。

己知四只小老鼠中有一只说的是真话,三只说的是假话。

到底是谁偷吃了奶酪。

### 如果题目变化只要修改这里就好了
# 列出证词,1代表做了,0代表没做
dic = {
    "A": {("A", 0)},
    "B": {("D", 1)},
    "C": {("B", 1)},
    "D": {("D", 0)},
}
true_num = 1  # 几个人说了真话
###

# 循环假设是谁做了
for do in dic.keys():
    l = {(i, 1 if i == do else 0) for i in dic.keys()}  # 列出全场情况
    num = 0  # 记录真话的次数
    true_list = []

    # 用集合判断是否说了真话
    # 证词 和 实际情况 取交集 等于 证词,代表说了真话
    for dwho, ddo in dic.items():  # 依次判断
        if (l & ddo) == ddo:
            num += 1
            true_list.append(dwho)

    if num == true_num:  # 判断是否正确
        print(f"{'、'.join(true_list)}说了真话,{do}干的")

# ==> D说了真话,A干的

标签:真话,python,list,dic,num,ddo,通解,true
From: https://www.cnblogs.com/shof/p/17302475.html

相关文章

  • Python 小型项目大全 61~65
    六十一、ROT13密码原文:http://inventwithpython.com/bigbookpython/project61.htmlROT13密码是最简单的加密算法之一,代表“旋转13个空格”密码将字母A到Z表示为数字0到25,加密后的字母距离明文字母13个空格:A变成N,B变成O,以此类推。加密过程和解密过程是一样的,这使得......
  • Python 小型项目大全 71~75
    七十一、声音模拟原文:http://inventwithpython.com/bigbookpython/project71.html类似于西蒙电子玩具,这款识记游戏使用第三方playsound模块,播放四种不同的声音,分别对应键盘上的A、S、D、F键。当你成功地重复游戏给你的图案时,图案会变得越来越长。你的短期记忆中能容纳多少声......
  • Python 小型项目大全 76~81
    七十六、井字棋原文:http://inventwithpython.com/bigbookpython/project76.html井字棋是一种在3×3网格上玩的经典纸笔游戏。玩家轮流放置X或O标记,试图连续获得三个。大多数井字棋都以平局告终,但如果你的对手不小心,你也有可能智胜他们。运行示例当您运行tictactoe.py......
  • Python 小型项目大全 66~70
    六十六、简单替换密码原文:http://inventwithpython.com/bigbookpython/project66.html简单替换密码用一个字母代替另一个字母。由于字母A有26种可能的替换,B有25种可能的替换,C有24种可能的替换,等等,所以可能的键的总数是26×25×24×23×...×1,即403291461126......
  • Python 小型项目大全 31~35
    三十一、猜数字原文:http://inventwithpython.com/bigbookpython/project31.html猜数字是初学者练习基本编程技术的经典游戏。在这个游戏中,电脑会想到一个介于1到100之间的随机数。玩家有10次机会猜出数字。每次猜中后,电脑会告诉玩家它是太高还是太低。运行示例当您运......
  • Python 小型项目大全 36~40
    三十六、沙漏原文:http://inventwithpython.com/bigbookpython/project36.html这个可视化程序有一个粗糙的物理引擎,模拟沙子通过沙漏的小孔落下。沙子堆积在沙漏的下半部分;然后把沙漏翻过来,重复这个过程。运行示例图36-1显示了运行hourglass.py时的输出。:沙漏程序在落......
  • Python 小型项目大全 41~45
    四十一、幸运星原文:http://inventwithpython.com/bigbookpython/project41.html在这个碰运气游戏中,你掷骰子来收集星星。你掷得越多,你能得到的星星就越多,但是如果你得到三个头骨,你就失去了一切!这款快速多人游戏可以支持任意多的玩家,是聚会的理想选择。在你的回合中,你从骰盅......
  • 关于Python爬虫的一些总结
    作为一名资深的爬虫工程师来说,把别人公开的一些合法数据通过爬虫手段实现汇总收集是一件很有成就的事情,其实这只是一种技术。初始爬虫问题:什么是爬虫?网络爬虫是一种按照一定的规则,自动地抓取网络信息的程序或者脚本。爬虫有什么用?①网络数据采集②大数据分析③网页分析......
  • Python 小型项目大全 11~15
    十一、标题党生成器原文:http://inventwithpython.com/bigbookpython/project11.html我们的网站需要欺骗人们去看广告!但是想出有创意的原创内容太难了。幸运的是,有了标题党生成器,我们可以让一台计算机产生数百万个令人发指的虚假标题。都是低质量的,但读者似乎并不介意。这个程......
  • Python 小型项目大全 16~20
    #16钻石原文:http://inventwithpython.com/bigbookpython/project16.html这个程序的特点是一个小算法,用于绘制各种尺寸的ASCII艺术画钻石。它包含绘制轮廓或你指定大小的填充式菱形的功能。这些功能对于初学者来说是很好的练习;试着理解钻石图背后的图案,因为它们的尺寸越来......