测试#2失败。答案错误

时间:2017-10-23 07:03:41

标签: python python-3.x

该程序的输入是两组。每组都在一个单独的行中;集合的元素是空格分隔的。

您的程序必须输出这些集的对称差异。

示例

集合{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=' ')

测试结果失败......有人可以解释一下:

2 个答案:

答案 0 :(得分:1)

您的代码工作正常。以下是相同的驱动程序测试。

IN : 1 2 3
IN : 0 1 2

OUT : 0 3

但是,有一个小logical mistake。您没有正确处理您的输入。但最后,幸运的是,它取消了它可能创建的问题

他们应该是:

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}

答案 1 :(得分:1)

让我们打印您的输入:

input_set = set(input())
print(input_set)
  • 对于输入1 2 3,它会打印{' ', '3', '1', '2'}
  • 对于输入1,2,3,它会打印{',', '3', '1', '2'}
  • 对于输入123,它会打印{'3', '1', '2'}

如您所见,您的输入存在问题。

您可以使用不带空格的输入,例如123012

或者,如果您想使用2个数字之间的空格,可以使用split()

input_set = set(input().split())
print(input_set)

输入:

1 2 3

输出:

{'3', '2', '1'}