用Python语言解决

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词:

A说:不是我。

B说:是C。

C说:是D。

D说:C在胡说

已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手

python程序如下,有帮助望采纳

a=[0]*4
name='ABCD'
print(a)
for i in range(4):
    a[i]=1
    if((not a[0])+a[2]+a[3]+(not a[3])==3):
        print(name[i]+'是凶手!')
    a[i]=0

not a
is C
is D
not D
B C 矛盾,C D矛盾
那就是C 说了谎

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

for x in ["A","B","C","D"]:
    a = x!="A" #A说:不是我。
    b = x=="C" #B说:是C。
    c = x=="D" #C说:是D。
    d = not c #D说:C在胡说
    if a+b+c+d == 3:
        print(x,"是凶手")

img

假设凶手是e,e的取值范围是1,2,3,4
那么可得:
a:e!=1
b:e=3
c:e=4
d:e!=4
然后设个int count表示有几个人说真话
把四个条件放到4个if里面,如果是true,count++
写个循环,让e分别是1,2,3,4
看count什么时候等于3,就是答案

for循环依次判断
参考: