python中的多个设置操作

时间:2018-10-01 15:30:16

标签: python python-3.x set

我是python的新手,现在开始学习它。我在网上练习,遇到以下问题。我试图解决它,但是,尽管我得到了在线验证器的预期结果,但还是得到了预期的结果。请建议我要去哪里错了。

++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++

  

在一所学校中,共有20名学生,编号从1到20。您将获得三个名为“ C”,“ F”和“ H”的列表,分别代表打板球,足球和曲棍球的学生。 。根据此信息,找出并打印以下内容:

     
      
  • 参加这三种运动的学生
  •   
  • 既玩板球又玩足球但不打曲棍球的学生
  •   
  • 完全参加两项运动的学生
  •   
  • 不参加这三种运动中的任何一项的学生
  •   
     

格式:

     

输入:

     
    

3个列表,其中包含分别代表板球,足球和曲棍球的学生的数字(从1到20)。

  
     

输出:

     
    

根据问题中提供的限制,有4个不同的列表包含学生。

  

示例: 输入:

[[2, 5, 9, 12, 13, 15, 16, 17, 18, 19]
[2, 4, 5, 6, 7, 9, 13, 16]
[1, 2, 5, 9, 10, 11, 12, 13, 15]] 

预期输出:

[2, 5, 9, 13]
[16]
[12, 15, 16]
[3, 8, 14, 20]

下面是我的代码

C = set(input_list[0])
F = set(input_list[1])
H = set(input_list[2])
A= set(range(1, 21))

print(sorted(list(C & F & H)))
print(sorted(list((C & F) - H)))
print(sorted(list(((C-F)&H | (C-H)&F))))
print(sorted(list(A-(C|F|H))))

我不确定是否真的需要A。

谢谢

7 个答案:

答案 0 :(得分:1)

如果没有A集合,结果应该无处发现期望的学生,因为他们不属于任何其他集合(按定义)。 因此,确实需要A集来包含不属于其他集合的学生。

答案 1 :(得分:1)

除了完全参加两项运动的学生以外,您对其他人都是正确的,应该是:

(C|F|H) - (C^F^H)

答案 2 :(得分:1)

# Read the three input lists, i.e. 'C', 'F', and 'H'.

C = input_list[0]
F = input_list[1]
H = input_list[2]

# Write your code here
CS=set(C)
FS=set(F)
HS=set(H)
CHF=set(range(1,21))

A=(CS.intersection(FS.intersection(HS)))
B=((FS.intersection(CS))-CS.intersection(FS.intersection(HS)))
C=((((CS-FS).intersection(HS)).union((HS-CS).intersection(FS))).union((FS-HS).intersection(CS)))
D=(CHF-(CS.union(FS.union(HS))))

print(sorted(list(A)))
print(sorted(list(B)))
print(sorted(list(C)))
print(sorted(list(D)))

答案 3 :(得分:0)

print(sorted(list(set(C)&set(F)&set(H))))

print(sorted(list(set(C)&set(F)-set(H))))

y=set(C)&set(F)&set(H)

print(sorted(list(((set(C)&set(F))|(set(H)&set(F))|(set(C)&set(H)))-y)))

print(sorted(list(A-(set(C)|set(F)|set(H)))))

答案 4 :(得分:0)

input_list_c = [2, 5, 9, 12, 13, 15, 16, 17, 18, 19]
input_list_f = [2, 4, 5, 6, 7, 9, 13, 16, 20]
input_list_h = [1, 2, 5, 9, 10, 11, 12, 13, 15, 20]

mc = max(input_list_c)
mf = max(input_list_f)
mh = max(input_list_h)

if mc > mf & mc > mh:
    m = mc
elif mf > mc & mf > mh:
    m = mf
else:
    m = mh

nc = min(input_list_c)
nf = min(input_list_f)
nh = min(input_list_h)

if nc < nf & nc < nh:
    n = nc
elif nf < nc & nf > nh:
    n = nf
else:
    n = nh

C = set(input_list_c)
F = set(input_list_f)
H = set(input_list_h)
A = set(range(n,m))
Y = (C&F&H)

print(sorted(list(Y)))
print(sorted(list((C&F)-H)))
print(sorted(list((C&F|C&H|F&H)-Y)))
print(sorted(list(A-(C|F|H))))

答案 5 :(得分:0)

导入ast,sys

input_str = sys.stdin.read()

input_list = ast.literal_eval(input_str)

C = input_list [0]

F = input_list [1]

H = input_list [2]

C =设置(input_list [0])

F =设置(input_list [1])

H =设置(input_list [2])

print(sorted(list(C&F&H)))

print(sorted(list((C&F)-(C&F&H))))

print(sorted(list((((C&F)|(F&H)|(C&H))-(C&F&H))))

print(sorted(list(set(range(1,21))-(C | F | H))))

答案 6 :(得分:0)

C = input_list[0]
F = input_list[1]
H = input_list[2]

C = set(input_list[0])
F = set(input_list[1])
H = set(input_list[2])
print(sorted(list(C & F & H)))
print(sorted(list((C & F) - (C & F & H))))
print(sorted(list(((C & F) | (F & H) | (H & C)) - (C&F&H))))
print(sorted(list(set(range(1,21)) -(C | F | H))))