<p>你问题中的代码无效。例如,<code>Move()</code>中的<code>Direction_functions[Direction]</code>没有任何有用的功能。不过我想我明白你的意思。你知道吗</p>
<p>整数是不可变的,所以当您尝试更改1的值时,会创建一个新的值,并将结果分配给所使用的变量名。你知道吗</p>
<p>函数参数本质上是局部变量,因此在每个函数中<code>CoordinateX</code>或<code>CoordinateY</code>只是传递给函数的值的名称。当您的函数更改此值时,它们仅在本地更改参数名称所引用的内容。你知道吗</p>
<p>解决此问题的一种方法是在可变容器对象(如列表)中传递值,然后修改列表的内容。另一个非常常见的解决方法是使用全局变量并让函数修改这些变量。你知道吗</p>
<p>下面是一个工作版本的代码,它通过传递一个包含x和y坐标的列表来最小化全局变量的使用:</p>
<pre><code>X, Y = 0, 1
MINIMUM_X, MAXIMUM_X = -5, 5
MINIMUM_Y, MAXIMUM_Y = -5, 5
def Move(Direction, position):
DIRECTION_FUNCTIONS[Direction](position)
print('{}, {}'.format(*position))
def Left(position):
if position[X] > MINIMUM_X:
position[X] -= 1
else:
Fail(position)
def Right(position):
if position[X] < MAXIMUM_X:
position[X] += 1
else:
Fail(position)
def Up(position):
if position[Y] > MINIMUM_Y:
position[Y] -= 1
else:
Fail(position)
def Down(position):
if position[Y] < MAXIMUM_Y:
position[Y] += 1
else:
Fail(position)
def Fail(position):
print('Failure\n{}, {}'.format(*position))
DIRECTION_FUNCTIONS = [Left, Right, Up, Down]
location = [0, 0]
while True: # Infinite loop for testing purposes
Number = input("enter a number from 0 to 3: ")
direction = int(Number)
if 0 <= direction <= 3:
Move(direction, location)
else:
print("Input out of range, try again.")
</code></pre>