我只是想实现set mut,以下是相同的代码
a=raw_input()
setA=set(list(map(int,raw_input().split())))
N=int(raw_input())
for i in range(N):
operation=raw_input().split()
setB=set(list(map(int,raw_input().split())))
if 'update' in operation[0]:
setA.update(setB)
elif 'intersection_update' in operation[0]:
setA.intersection_update(setB)
elif 'symmetric_difference_update' in operation[0]:
setA.symmetric_difference_update(setB)
elif 'difference_update' in operation[0]:
setA.difference_update(setB)
print sum(setA)
如果我实现上面的代码,我注意到除了更新之外没有其他指令实际实现... 有人能解释我背后的原因! inputs =字符串,它们之间有空格 输出应该是setA中存在的元素的总和 感谢您提前回复:)
答案 0 :(得分:0)
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
print("Strat to load")
activityIndicator.startAnimating()
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
print("finish to load")
activityIndicator.stopAnimating()
}
仔细查看此代码段。如果子字符串if 'update' in operation[0]:
setA.update(setB)
elif 'intersection_update' in operation[0]:
setA.intersection_update(setB)
elif 'symmetric_difference_update' in operation[0]:
setA.symmetric_difference_update(setB)
elif 'difference_update' in operation[0]:
setA.difference_update(setB)
不在update
中,则operation[0]
中不存在intersection_update
。有些人会选择其他精灵。
另一方面,假设您的operation[0]
包含operation[0]
,即使这样,相应的elif也不会被调用。因为,symmetric_difference_update
也是如此,这将被执行。因此,即使对于有效输入,也只会执行第一个if。
那么解决方案是什么?
您必须更改条件的顺序。将较大的字符串放在顶部,将较大字符串的子字符串放在底部,这样就不会生成上面的大小写。其中一个解决方案:
if 'update' in operation[0]
或者,更合适的是,您只需检查if 'symmetric_difference_update' in operation[0]:
setA.symmetric_difference_update(setB)
elif 'difference_update' in operation[0]:
setA.difference_update(setB)
elif 'intersection_update' in operation[0]:
setA.intersection_update(setB)
elif 'update' in operation[0]:
setA.update(setB)
而不是==
。然后订单并不重要。
答案 1 :(得分:0)
不完全确定您正在处理的输入数据,但我猜测问题是您正在使用
needle in haystack
匹配字符串的一部分而不是
A==B
哪个匹配精确的字符串。在这样做之前,您可能想要剥离空白区域。所以我建议尝试这个:
a=raw_input()
setA=set(list(map(int,raw_input().split())))
N=int(raw_input())
for i in range(N):
operation=raw_input().split()
setB=set(list(map(int,raw_input().split())))
command = operation[0].strip()
if 'update' == command:
setA.update(setB)
elif 'intersection_update' == command:
setA.intersection_update(setB)
elif 'symmetric_difference_update' == command:
setA.symmetric_difference_update(setB)
elif 'difference_update' == command:
setA.difference_update(setB)
print sum(setA)