一个逻辑题,求助
描述一位警察,抓获4个盗窃嫌疑犯甲、乙、丙、丁,他们的供词如下:
甲说:不是我偷的。
乙说:是甲偷的。
丙说:不是我。
丁说:是乙偷的。
他们4人中只有一人说的是真话,你知道谁是小偷吗?
输出格式
* 是小偷
不知道python怎么写出这个 枚举法 本帖最后由 xiaosi4081 于 2020-6-14 17:58 编辑
data = {
'甲':{'甲':False}
'乙':{'甲':True}
'丙':{'丙':False}
'丁':{'乙':True}
}
num = 1
用这个推断 xiaosi4081 发表于 2020-6-14 17:55
具体的代码是啥样的啊,因为刚开始学,什么都不懂,麻烦您了 穷小疯 发表于 2020-6-14 17:56
具体的代码是啥样的啊,因为刚开始学,什么都不懂,麻烦您了
for循环遍历 xiaosi4081 发表于 2020-6-14 17:59
for循环遍历
def thief_is():
for thief in ('甲', '乙', '丙', '丁'):
sum = ('甲' != thief) + (thief == '甲') + \
(thief != '丙') + (thief == '乙')
if sum == 3:
print("%s是小偷"%thief)
thief_is()
我这样写的 但是不对 提交不能通过 穷小疯 发表于 2020-6-14 18:03
我这样写的 但是不对 提交不能通过
def thief_is():
for thief in ('甲', '乙', '丙', '丁'):
s = ('甲' != thief) + (thief == '甲') + \
(thief != '丙') + (thief == '乙')
if s == 3:
print(thief,"是小偷")
thief_is()
xiaosi4081 发表于 2020-6-14 18:08
还是不能通过,可能汉字出问题了 我再看看 xiaosi4081 发表于 2020-6-14 18:08
答案应该错了,因为:
甲说:不是我偷的。
乙说:是甲偷的。
丙说:不是我。
丁说:是乙偷的。
他们4人中只有一人说的是真话,你知道谁是小偷
如果是乙的话,那么甲和丙都说了真话,就有两个说真话的人了。 穷小疯 发表于 2020-6-14 18:15
还是不能通过,可能汉字出问题了 我再看看
看看参考答案 java2python 发表于 2020-6-14 18:15
答案应该错了,因为:
甲说:不是我偷的。
乙说:是甲偷的。
emmmm,我再看看哪个条件错了 穷小疯 发表于 2020-6-14 18:18
emmmm,我再看看哪个条件错了
是答案错了,别管它 (!A && !A && C && !B) || (A && A && C && !B) || (A && !A && !C && !B) || (A && !A && C && B)
=> (!A && C && !B) || (A && C && !B)
=> C xiaosi4081 发表于 2020-6-14 18:20
是答案错了,别管它
太自信了哈哈...{:10_245:} Twilight6 发表于 2020-6-14 18:22
太自信了哈哈...
.......我这又不是
对了,叫他把参考答案发下 xiaosi4081 发表于 2020-6-14 18:20
是答案错了,别管它
for p in ['甲', '乙', '丙', '丁']:
if (p!='甲') + (p=='甲') + (p!='丙') + (p=='乙') ==1 :
print(p, '是小偷')
改了一下 这个的结果是对的 本帖最后由 xiaosi4081 于 2020-6-14 18:29 编辑
穷小疯 发表于 2020-6-14 18:26
改了一下 这个的结果是对的
元组和列表的区别咯,还有一个数字
测试一下是不是:
for p in ['甲', '乙', '丙', '丁']:
print((p!='甲') + (p=='甲') + (p!='丙') + (p=='乙') )
if (p!='甲') + (p=='甲') + (p!='丙') + (p=='乙') ==1 :
print(p, '是小偷') xiaosi4081 发表于 2020-6-14 18:25
.......我这又不是
对了,叫他把参考答案发下
{:10_297:} 又臭又长的代码:
class Testimony:
def __init__(self,sayer,subject,pred,obj):
self.sayer = sayer
self.subject = subject
self.predicate = pred
self.obj = obj
self.value = False
def result(self,answer):
if self.subject == answer.subject and self.predicate == answer.predicate:
self.value = True
elif self.subject != answer.subject and self.predicate != answer.predicate:
self.value = True
else:
self.value = False
t1=Testimony('甲','甲',False,'thief')
t2=Testimony('乙','甲',True,'thief')
t3=Testimony('丙','丙',False,'thief')
t4=Testimony('丙','乙',True,'thief')
for thief in ('甲', '乙', '丙', '丁'):
answer = Testimony('answer',thief,True,'')
tru = 0
for t in (t1,t2,t3,t4):
t.result(answer)
if t.value:
tru += 1
if tru == 1:
print ("answer is :",thief)
答案:
answer is : 丙
页:
[1]