两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单

题目

两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单

解析:

先把所有满足“a说他不和x比,c说他不和x,z比”的元组用列表的形式列出来
然后遍历列表中元组(a,b)的第一个元素,
如果第一个元素没有与之相同的就记录下这个元组,接着遍历第二个元素
并且把所有与第一个元组的第二个元素相同的其他元组删除,
直到遍历完整个列表
再次遍历列表把所有与所选元组第一个元素相同的其他元组删除,
直到遍历完整个列表

代码:

# 两个乒乓球队进行比赛,各出三人。
# 甲队为a,b,c三人,乙队为x,y,z三人。
# 已抽签决定比赛名单。有人向队员打听比赛的名单。
# a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
# 解析:
# 先把所有满足“a说他不和x比,c说他不和x,z比”的元组用列表的形式列出来
# 然后遍历列表中元组(a,b)的第一个元素,
# 如果第一个元素没有与之相同的就记录下这个元组,接着遍历第二个元素
# 并且把所有与第一个元组的第二个元素相同的其他元组删除,
# 直到遍历完整个列表
# 再次遍历列表把所有与所选元组第一个元素相同的其他元组删除,
# 直到遍历完整个列表
jia, yi, complete = ['a', 'b', 'c'], ['x', 'y', 'z'], []  # 甲乙球队
for i in range(0, 3):
    for j in range(0, 3):
        complete.append((jia[i],yi[j]))
        if (jia[i],yi[j])==('a','x') or (jia[i],yi[j])==('c','x') or (jia[i],yi[j])==('c','z'):
            del complete[-1]
k,tem,com=0,0,0
while k<len(complete):
    n,count,m=0,0,0
    while n<len(complete) and count<2:
        if complete[n][0]==complete[k][0]:
            count+=1
        n+=1
    if count<2:
        tem,com=complete[k][1],complete[k][0]
        while m < len(complete):
            if complete[m][1] == tem and complete[m][0] != com:
                del complete[m]
            else:
                m += 1
    k+=1
k=0
while k<len(complete):
    n,count,m=0,0,0
    while n<len(complete) and count<2:
        if complete[k][1]==complete[n][1]:
            count+=1
        n+=1
    if count<2:
        tem,com=complete[k][1],complete[k][0]
        while m < len(complete):
            if complete[m][0] == com and complete[m][1] != tem:
                del complete[m]
            else:
                m += 1
    k+=1


print('比赛:',complete)





结果:

我是你爸爸

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东篱把酒黄昏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值