Неверный счет в переменной
print("start")
start = {"x":20, "y":20};
print(start)
print("startingPos")
startingPos = start;
print(startingPos)
def refreshCoords(directions,startingPos):
if directions == "^":
startingPos = {"x":startingPos["x"], "y":startingPos["y"]+1};
if directions == "v":
startingPos = {"x":startingPos["x"], "y":startingPos["y"]-1};
return startingPos
if directions == ">":
startingPos = {"x":startingPos["x"]+1, "y":startingPos["y"]};
if directions == "<":
startingPos = {"x":startingPos["x"]-1, "y":startingPos["y"]};
def walker(direction,startingPos):
print(refreshCoords(direction,startingPos))
for i in range(1,10,1):
walker("v",startingPos)
Нужна помощь в разъяснение, не понимаю почему при вызове walker("v",startingPos), "Y" меняется только один раз, а дальше значение повторяется. Надо что бы, он менялся столько раз сколько надо ( в данном примере что бы он изменялась с 20 до 10 при вызове функции). В чем ошибка в этом коде?
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
все дело в том, что вы в функции меняете значение локальной переменной startingPos, никак не затрагивая глобальную переменную startingPos
обойти это можно например через return
print("start")
start = {"x":20, "y":20}
print(start)
print("startingPos")
startingPos = start
print(startingPos)
def refreshCoords(directions, oldPos):
newPos = oldPos
if directions == "^":
newPos = {"x":oldPos["x"], "y":oldPos["y"]+1}
if directions == "v":
newPos = {"x":oldPos["x"], "y":oldPos["y"]-1}
if directions == ">":
newPos = {"x":oldPos["x"]+1, "y":oldPos["y"]}
if directions == "<":
newPos = {"x":oldPos["x"]-1, "y":oldPos["y"]}
return newPos
def walker(direction, oldPos):
newPos = refreshCoords(direction, oldPos)
print(newPos)
return newPos
newPos = startingPos
for i in range(1,10,1):
newPos = walker("v",newPos)