1

3 つのリストがあり、アイテムをあるリストから別のリストに移動したいと考えています。項目をリスト 3 に移動する場合を除き、すべて正常に動作します。その後、プログラムは移動ステップを 2 回実行します。これをより良く、より短く書くにはどうすればよいか、誰にもわかりませんか?

from os import system

list_a = [2]
list_b = [1]
list_c = [3, 4, 5, 6, 7, 8]

while True:
    system("clear")
    print "\nlist_a --->", list_a
    print "list_b -----> ", list_b
    print "list_c -----> ", list_c

    item = input ("\n?> ")

    place = [list_a, list_b, list_c]
    place_name = ["List_A", "List_B", "List_C"]

    for i, a in zip(place, place_name):
        if item in i:

            print "item", item, "--->", a
            print "\n\n1) List_A"
            print "2) List_B"
            print "3) List_c"

ここに問題があるようです。アイテムが list_3 スクリプトに移動されると、それが 2 回実行されます

            target_list = input("move to ---> ")
            target_list = target_list - 1
            target_list = place[target_list]

            i.remove(item)
            target_list.append(item)

            print "\nitem moved!!"

            # break out of loop that was missing before
            break
    raw_input()
4

1 に答える 1

1

これはかなり単純だと思います。forループの反復でアイテムを後のリストに移動した場合、その後のリストまで反復を続け、アイテムがそのリストにあることを確認して、もう一度移動するように依頼します。if ステートメントの最後でブレークします。これにより、移動が発生した後の for ループの反復が停止します。

print "\nitem moved"
break
于 2013-06-17T10:43:33.897 に答える