逻辑推演题02

【问题描述】在一次物理竞赛中,有甲、乙、丙、丁、戊共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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值