两个乒乓球队进行比赛,各出三人。甲队为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,0while n<len(complete) and count<2:if complete[n][0]==complete[k][0]:count+=1n+=1if 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 += 1k+=1
k=0
while k<len(complete):n,count,m=0,0,0while n<len(complete) and count<2:if complete[k][1]==complete[n][1]:count+=1n+=1if 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 += 1k+=1print('比赛:',complete)