【问题描述】在一次物理竞赛中,有甲、乙、丙、丁、戊共5名同学分别获得了前5名(无并列名次),小明问他们分别是第几名,他们的回答如下︰甲说:丁是第二名,乙是第三名。乙说:第二名是丙,第四名是戊。丙说:戊是第一名,甲是第五名。丁说:第三名是丙,第四名是甲。戊说︰乙是第二名,丁是第五名。他们每人都只说对了一半,请完善如下程序,帮小明推演他们的真实名次,并按照名次由前往后输出。程序中用A、B、C、D、E分别代表甲、乙、丙、丁、戊。
import random
a = ['A', 'B', 'C', 'D', 'E']
while True:
random.shuffle(a)
if ((a[1] == 'D' and a[2] == 'B') == 0 and (a[1] == 'D' or a[2] == 'B') == 1) and ((a[1] == 'C' and a[3] == 'E') == 0 and (a[1] == 'C' or a[3] == 'E') == 1)and((a[0] == 'E' and a[4] == 'A') == 0 and (a[0] == 'E' or a[4] == 'A') == 1)and(( (a[2] == 'C' and a[3] == 'A') == 0 and (a[2] == 'C' or a[3] == 'A') == 1) and ((a[1] == 'B' and a[4] == 'D') == 0 and (a[1] == 'B' or a[4] == 'D') == 1)):
print(a)
break