我不知道我在这里做错了什么。我认为它只运行第一个命令,为什么它打印一次列表并且它没有运行其余的命令?
if __name__ == '__main__':
N = int(input())
lis = []
def dance(string, lis):
return {
'insert': lis.insert(int(string[1]),int(string[2])),
'print': print(lis),
'remove': lis.remove(string[1]),
'append': lis.append(string[1]),
'sort': lis.sort(),
'pop': lis.pop(),
'reverse': lis.reverse(),
}[string][0]
for i in range(N):
string=input().split()
dance(string, lis)
输入
12
insert 0 5
insert 1 10
insert 0 6
print
remove 6
append 9
append 1
sort
print
答案 0 :(得分:1)
您的函数在选择其中一个之前调用所有方法:
def dance(string, lis):
return {
'insert': lis.insert(int(string[1]),int(string[2])),
'print': print(lis),
'remove': lis.remove(string[1]),
'append': lis.append(string[1]),
'sort': lis.sort(),
'pop': lis.pop(),
'reverse': lis.reverse(),
}[string][0]
你应该将每个人包裹在一个lambda中,然后再调用所选的一个:
def dance(string, lis):
return {
'insert': lambda: lis.insert(int(string[1]),int(string[2])),
'print': lambda: print(lis),
'remove': lambda: lis.remove(string[1]),
'append': lambda: lis.append(string[1]),
'sort': lambda: lis.sort(),
'pop': lambda: lis.pop(),
'reverse': lambda: lis.reverse(),
}[string[0]]()