以下是黑客排名代码,x未映射到实例args。有人请告诉我一个原因吗?https://www.hackerrank.com/challenges/python-lists/problem
if __name__ == '__main__':
N = int(input())
l=[]
for _ in range(N):
line = input().split()
cmd = line[0]
args= line[1:] # <=> here we have 0, 1 or 2 parameters, right?
"""if cmd!= "print":
cmd += "(" + ",".join(args)+")"""
#x = ",".join(map(str,args))
if len(args) == 2:
x, y = map(int, args)
if cmd == "insert":
l.insert(x, y)
elif len(args) == 1:
x = map(int,args)
if cmd == "remove":
l.remove(x)
elif cmd == "append":
l.append(x)
elif cmd == "sort":
l.sorted()
elif cmd == "pop":
l.pop()
elif cmd =="reverse":
l.reverse()
elif cmd == 'print':
print(l)
答案 0 :(得分:1)
你的问题在于这一行:
x = map(int,args)
这与您在代码的不同分支中的行不同:
x, y = map(int, args)
原因是第一个将名称x
绑定到map
来电。它不会解压缩map
对象以获取它将产生的单个值。为此你需要:
x, = map(int, args) # note the comma!
但如果您知道args
中只有一个值,则根本不需要在其上调用map
。只需使用x = int(args[0])
代替。
答案 1 :(得分:0)
您的代码中存在几个问题。
x = map(int,args)
(第16行),x成为地图对象。要从此映射获取整数,请先将其转换为列表,然后使用索引。 x = list(map(int,args))[0]
将解决您的问题。或者您只需使用x = int(args[0])
。sorted
功能,将l.sorted()
更改为l.sort()
。