你在某班班委成员的选举中,已知王小红、李强、丁金生三位同学被选进了班委会.该班的甲,乙,丙三名 学生预言如下.
甲说:王小红为班长,李强为生活委员.
乙说:丁金生为班长,王小红为生活委员.
丙说:李强为班长,王小红为学习委员.
班委会分工名单公布后发现,甲、乙、丙三人都恰好猜对了一半,问:王小红、李强、丁金生各任何职?
用Python编程实现如下:
#p45.29
''' a1:王小红为班长
a2:王小红为生活委员
a3:王小红为学习委员
b1:李强为班长
b2:李强为生活委员
c:丁金生为班长'''
for a1 in [0,1]:
for a2 in [0,1]:
for a3 in [0,1]:
for b1 in [0,1]:
for b2 in [0,1]:
for c in [0,1]:
if a1+b2==1 and c+a2==1 and b1+a3==1:#每个人只说对一半
if a1+a2+a3==1 and b1+b2==1:#每个人只能担任一个职位
if a1+b1+c==1 and a2!=b2:#不能有多个人担任一个职位
if a1 == 1:#之后对结果进行翻译
print("王小红为班长")
if a2 == 1:
print("王小红为生活委员")
if a3 == 1:
print("王小红为学习委员")
if b1 == 1:
print("李强为班长")
if b2 == 1:
print("李强为生活委员")
if c == 1:
print("丁金生为班长")
之后得出结果为王小红为学习委员,李强为生活委员,丁金生为班长。(根据所问来确定原子命题,再根据条件对其进行限制)