2 回答

TA贡献1795条经验 获得超7个赞
欢迎来到计算器。如果您是 Python 的初学者,我建议您阅读Python 文档,它们为理解 Python 提供了很好的资源。
对于这个问题,你需要阅读https://docs.python.org/3/library/functions.html
好的,让我们逐行分解代码。
n = int(input())
从 stdin 获取输入字符串,然后将其转换为int
数据类型。然后存入变量n
s = set(map(int, input().split()))
接受一个输入,并在每个空白处拆分它。例如,如果输入是1 2 3
,它将是一个列表[1, 2, 3]
。然后,将列表的每个元素转换为 int 数据类型。然后,将列表转换为集合。然后将其存储到变量s
中。
for i in range(int(input())):
从 0 迭代到输入的字符串并转换为 int 数据类型为i
eval('s.{0}({1})'.format(*input().split()+['']))
好的,这会有点棘手。
首先,尝试了解 Python 格式,我建议您阅读https://pyformat.info/。总之,"string {0}, {2}, {1}".format("a", "b", "c")
会给你一串"string a, c, b"
。
在这种情况下,格式将采用 2 个参数,因为string 中有{0}
和,它来自语句。{1}
's.{0}({1})'
*input().split()+['']
Python 将input().split()
首先执行,获取输入并将其拆分为列表。然后将该列表与另一个列表合并,即['']
. 之后,将列表元素作为格式的参数展开。
例如,如果您有输入
remove 9
它将调用这样的格式
's.{0}({1})'.format("remove", "9", "")
# will be
's.remove(9)'
"remove 9" -> ["remove", "9"] -> ["remove", "9", ""] -> "remove", "9", "" (as function argument)
好吧,但这是+['']为了什么?对于只有一个单词的输入的格式化程序来说,这是一种技巧。
例如
's.{0}({1})'.format("pop", "")
# will be
's.pop()'
Eval 函数接受一个参数,即字符串。它会将字符串作为 Python 代码执行。因此,eval("print(1)")将打印1到控制台。
print(sum(s))
打印集合的总和s
我希望我解释得足够清楚

TA贡献1744条经验 获得超4个赞
这也是一个很好的替代解决方案:
n = int(input())
s = set(map(int, input().split()))
d = {"pop":s.pop, "remove":s.remove, "discard": s.discard}
for _ in range(int(input())):
c = input().split()
d[c[0]](int(c[1])) if len(c)>1 else d[c[0]]()
print(sum(s))
添加回答
举报