在某班班委成员的选举中,已知王小红、李强、丁金生三位同学被选进了班委会。该班的甲,乙,丙三名学生预言如下:
甲说:王小红为班长,李强为生活委员。
乙说:丁金生为班长,王小红为生活委员。
丙说:李强为班长,王小红为学习委员。
班委会分工名单公布后发现,甲、乙、丙三人都恰好猜对了一半。问:王小红、李强、丁金生各任何职(用等值演算求解)?
'''在某班班委成员的选举中,已知王小红、李强、丁金生三位同学被选进了班委会。该班的甲,乙,丙三名学生预言如下:
甲说:王小红为班长,李强为生活委员。
乙说:丁金生为班长,王小红为生活委员。
丙说:李强为班长,王小红为学习委员。
班委会分工名单公布后发现,甲、乙、丙三人都恰好猜对了一半。问:王小红、李强、丁金生各任何职(用等值演算求解)?'''
'''
设命题:
a:王小红为班长 b:李强为生活委员
c:丁金生为班长 d:王小红为生活委员
e:李强为班长 f:王小红为学习委员
甲、乙、丙三人的判断分别用Q R S表示:
'''
for a in range(2):
for b in range(2):
for c in range(2):
for d in range(2):
for e in range(2):
for f in range(2):
if (a == 1 and c == 1): continue
if (a == 1 and d == 1): continue
if (a == 1 and f == 1): continue
if (b == 1 and d == 1): continue
if (b == 1 and e == 1): continue
Q = ((not a) and b) or (a and (not b))
R = ((not c) and d) or (c and (not d))
S = ((not e) and f) or (e and (not f))
E = Q and R and S
if E ==1:
if a ==1:
print("王小红为班长")
elif d == 1:
print('王小红为生活委员')
else:
print('王小红为学习委员')
if c == 1:
print('丁金生为班长')
if e == 1:
print('李强为班长')
if f == 1:
print('李强为生活委员')
#如果只显示了两个人的,那另一个人的职位就是剩下那个职位
王小红为学习委员
丁金生为班长
李强为生活委员
Process finished with exit code 0
综上所述:丁金生为班长
王小红为学习委员
李强为生活委员