簡體   English   中英

為什么此for循環未運行次數指示?

[英]why this for-loop doesn't run the number of times indicates?

我不知道我在做什么錯。 我認為它只運行第一個命令,為什么它只打印一次列表卻不運行其余命令?

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

您的函數會在選擇其中一種方法之前調用所有方法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM