Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 测试失败#2。错误答案_Python_Python 3.x - Fatal编程技术网

Python 测试失败#2。错误答案

Python 测试失败#2。错误答案,python,python-3.x,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: differenc

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

程序必须输出这些集合的对称差

示例

集合{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=' ')
样本输出:

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=' ')
我的解决方案:

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}

让我们打印您的输入:

input_set = set(input())
print(input_set)
  • 对于输入的
    123
    ,它将打印
    {','3','1','2'}
  • 对于输入
    1,2,3
    ,它将打印
    {',','3','1','2'}
  • 对于输入
    123
    ,它将打印
    {'3','1','2'}
正如您所看到的,您的输入是有问题的

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

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

输入:

1 2 3
输出:

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

并不是说它在概念上更好,或者根本更好,但是您不需要将拆分映射到int;你可以用拆分字符串来代替。@EnricoBorba,我知道。但是,由于示例输出似乎是
int
,所以保持不变。它工作了…感谢您的快速回复。有没有办法降低它的复杂性?现在,它显示了12.65复杂度分数,最佳复杂度分数是4.12。@AjaiVeerSingh:Python集有运算符
^
,您可以尝试使用它。@Niemmi,谢谢。。。它工作得很好。。。我的复杂度得分是8.54