Python 测试失败#2。错误答案
该程序的输入为两组。每一组在单独的行中;集合的元素是空间分隔的 程序必须输出这些集合的对称差 示例 集合{1,2,3}和{0,1,2}的对称差等于{0,3} 样本输入: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
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