该程序的输入是两组。每组单独一行;该集合的元素是用空格分隔的。
您的程序必须输出这些集合的对称差。
示例
集合{1, 2, 3}和{0, 1, 2}的对称差等于{0, 3}。
示例输入:
1 2 3
0 1 2
示例输出:
0 3
我的解决方案:
set_1 = set(input())
set_2 = set(input())
difference_set1 = set_1 - set_2
difference_set2 = set_2 - set_1
for x in difference_set1:
difference_set2.add(x)
for x in difference_set2:
print(x, end=' ')
测试结果失败...有人可以解释一下吗:
最佳答案
你的代码工作正常。以下是相同的驱动程序测试。
IN : 1 2 3
IN : 0 1 2
OUT : 0 3
但是,有一个小逻辑错误
。您没有正确处理您的输入。但最终,对您来说幸运的是,它消除了它可能产生的问题。
它们应该是:
set_1 = set(map(int,input().split()))
set_2 = set(map(int,input().split()))
#OR just
set_1 = set(input().split())
set_2 = set(input().split())
快速浏览一下代码的工作原理和正确的代码。
>>> s = set(input()) #your code
1 2 3
>>> s
=> {'1', '2', ' ', '3'}
>>> s = set(map(int, input().split())) #should be
1 2 3
>>> s
=> {1, 2, 3}
关于python - 测试 #2 失败。错误的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46883601/