私は質問が非常に正確ではないことを知っています、そして、それは何が起こっているのか分かりません。私は問題を2行に絞り込んだが、私にとっては実行はむしろ変わっているようだ。私のコードが変数に間違った値を与えるのはなぜですか?
def loadmaze(backup):
test = createmaze(10,10) #This creates a new 10x10 matrix
maze = placewalls(test, "x") #The X is a string with wall positions
if maze != test:
#when placewalls executed correctly, and returned a maze different from the original
showmaze(maze) #simply printing maze to console
else:
return backup #so nothing changes, looks as if function never happened
return maze,10,10
# this returns the new maze, with walls, and the dimensions of the new maze
def placewalls(amaze,positions):
#placing walls, definitely correct
return amaze-with-walls
明らかに私は変数名を変更しているので、私が何をしているのかは明らかです。 問題は、私が関数loadmaze(maze)
を呼び出すと、決して壁がある迷路を返しません。何らかの形で、test
とmaze
の値は常に同じです。私は壁がある迷路が壁を持たないtest
の後にmaze
に割り当てられているので、これがどのようになるか分かりません。 デバッグによれば、test
には、3行目が実行された後の壁が含まれています。 助けてください、私はひどく混乱しています。
実際の 'placewalls'コードを表示する必要があります。明らかに "somethinggoeswrong"は真であるため、最初の引数を返します。 –
私はsomethinggoeswrongが偽であることを確信しています、そして、実際には壁を含む正しい迷路を返しています。バックアップには壁がないことに注意してください。 – Wh1spr
@ダニエルによって既に述べたように、何が間違っているかを実際に言うにはあまりにも小さなコードです。しかし、Pythonがどのように変数を(そしてどの変数が)渡すのか混乱しているかもしれませんか? 'maze'と' test'は同じオブジェクトであるかもしれませんが、現在は壁だけです。たとえば、[Python FAQ](https://docs.python.org/3/faq/programming.html#why-did-changing-list-y-also-change-list-x)を参照してください。 – stephan