我正在制作一个程序,我需要在这个程序中绘制一只乌龟在飞机起飞(100,100)并朝右的情况下的运动。用户可以通过三个步骤走路并输入他们希望走多远或转弯的位置,以便在90度内改变方向。我编写了我的函数,它接受原始坐标,操纵它们并返回新的坐标,但我的程序拒绝接受这个。我的程序返回我的绘图变量的操纵值(重命名为coor),但是当我尝试调用它时,python不会对它进行修改。
plot= [100,100]
i=0
def movement(step,coor,i):
x= coor[0]
y= coor[1]
if step == 'turn':
i = i+1
return coor,i
else:
if i == 0:
direct= 'right'
elif i == 1:
direct= 'down'
elif i == 2:
direct= 'left'
elif i ==3:
direct= 'up'
else:
i = 0
direct= 'right'
if direct == 'right':
coor= [x-step,y]
return coor
elif direct == 'down':
coor= [x,y+step]
return coor
elif direct== 'left':
coor == [x+step, y]
return coor
elif direct == 'up':
coor == [x, y-step]
return coor
step1= raw_input('Step choice (turn or walk) => ')
print step1
step1=step1.lower()
if step1 == 'walk':
numsteps1= input('Number of steps => ')
movement(numsteps1,plot,0)
elif step1== 'turn':
movement('turn',plot,0)
else:
print 'Illegal step choice.'
step2= raw_input('Step choice (turn or walk) => ')
print step2
step2=step2.lower()
if step2== 'walk':
numsteps2= input('Number of steps => ')
movement(numsteps2,coor,i)
if step2=='turn':
movement('turn',coor,i)
else:
print 'Illegal step choice.'
step3=raw_input('Step choice (turn or walk) => ')
print step3
step3=step3.lower()
if step3=='walk':
numsteps3= input('Number of steps => ')
movement(numsteps3,coor,i)
if step3=='turn':
movement('turn',coor,i)
else:
print 'Illegal step choice.'
print coor
答案 0 :(得分:1)
您需要在主体中指定值移动返回。
退出函数后,您在函数中创建的变量将被销毁。
做
coor=movement(inputs...)
而不是
movement(inputs...)
答案 1 :(得分:0)
coor
仅在您的函数中定义,因此您无法直接从函数外部访问它而不会使其全局化,或者返回值(按原样)并将其分配给变量(你不是)。
调用此函数时,请执行以下操作:
coords = movement('turn',coor,i)
然后,当您尝试使用以下方法打印时,您将能够看到当前值:
print coords