你在某班班委成员的选举中,已知王小红、李强、丁金生三位同学被选进了班委会.该班的甲,乙,丙三名 学生预言如下.
甲说:王小红为班长,李强为生活委员.
乙说:丁金生为班长,王小红为生活委员.
丙说:李强为班长,王小红为学习委员.
班委会分工名单公布后发现,甲、乙、丙三人都恰好猜对了一半,问:王小红、李强、丁金生各任何职?
代码如下:
ls = [0, 1]
for hongban in ls: # 当王小红是班长时,0代表不是,1代表是
for hongxue in ls: # 当王小红是学习委员时,0代表不是,1代表是
for hongsheng in ls: # 当王小红是生活委员时,0代表不是,1代表是
for qiangban in ls: # 当李强是班长时,0代表不是,1代表是
for qiangxue in ls: # 当李强是学习委员时,0代表不是,1代表是
for qiangsheng in ls: # 当李强是生活委员时,0代表不是,1代表是
for jinban in ls: # 当丁金生是班长时,0代表不是,1代表是
for jinxue in ls: # 当丁金生是学习委员时,0代表不是,1代表是
for jinsheng in ls: # 当丁金生是生活委员时,0代表不是,1代表是
if (jinban + jinxue + jinsheng == 1) \
and (hongban + hongsheng + hongxue == 1) \
and (jinban + jinxue + jinsheng == 1) \
and (hongban + qiangban + jinban == 1) \
and (hongxue + qiangxue + jinxue == 1) \
and (hongsheng + jinsheng + qiangsheng == 1): # 每个人只能担任一种职位且每种职位只能由一人担任
jia = (hongban + qiangsheng == 1)
yi = (jinban + hongsheng == 1)
bing = (qiangban + hongxue == 1)
if jia + yi + bing == 3:
print('''王小红是班长:{} 李强是班长:{} 丁金生是班长:{}
王小红是生活委员:{} 李强是生活委员:{} 丁金生是生活委员:{}
王小红是学习委员:{} 李强是学习委员:{} 丁金生是学习委员:{}'''. \
format(hongban, qiangban, jinban,
hongsheng, qiangsheng, jinsheng,
hongxue, qiangxue, jinxue))