2017-03-07 14 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] 

あなたはラムダにそれぞれ1をラップして、後で選ばれた1を呼び出す必要があります:

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

これは私のプロを解決しました傷 – BilLxTn

関連する問題