最初のシーケンスをとり、3つの関数を実行して3つの答えを吐き出すプログラムを作成しますが、再利用できるように元の変数を元のままにします。フォーラムのother answersから、私は、関数内の変数はローカルでなければならないと結論づけましたが、グローバルに動作しているようです。関数内の変数はローカルではないようです
from collections import deque
from sys import exit
initial_state = (1,2,3,4,5,6,7,8)
initial_state = deque(initial_state)
def row_exchange(t):
t.reverse()
return t
def rt_circ_shift(t):
t.appendleft(t[3])
del t[4]
t.append(t[4])
del t[4]
return t
def md_clk_rot (t):
t.insert(1,t[6])
del t[7]
t.insert(3,t[4])
del t[5]
t.insert(4,t[5])
del t[6]
return t
print(row_exchange(initial_state))
print(initial_state)
print(rt_circ_shift(initial_state))
print(md_clk_rot(initial_state))
私が得ることを期待する:
deque([8, 7, 6, 5, 4, 3, 2, 1])
deque([1, 2, 3, 4, 5, 6, 7, 8])
deque([4, 1, 2, 3, 6, 7, 8, 5])
deque([1, 7, 2, 4, 5, 3, 6, 8])
を代わりに私が手:
deque([8, 7, 6, 5, 4, 3, 2, 1])
deque([8, 7, 6, 5, 4, 3, 2, 1])
deque([5, 8, 7, 6, 3, 2, 1, 4])
deque([5, 1, 8, 6, 3, 7, 2, 4])
なぜ関数内のローカル変数の私ではないのですか? そこに私は同じ識別子initial_stateを使用していないように関数内の出力の名前を変更する方法はありますか? 私はかなりプログラミングに新しいので、説明以上に感謝します。 the docs for deque.reverseパー