2017-03-07 55 views
0

我不知道我在這裏做錯了什麼。我認爲它只運行第一個命令,爲什麼只打印一次列表,而不運行其餘的命令?爲什麼這個for-loop不運行的次數指示?

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 

回答

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]]() 
+0

謝謝,這解決了我的親blem – BilLxTn