|
发表于 2014-3-26 13:59:34
|
显示全部楼层
本帖最后由 xiawb 于 2014-3-26 14:36 编辑
>>>
向右移动10步后,位置是: (10, 0)
向上移动130步后,位置是: (10, 70)
向左移动10步后,位置是: (0, 70)
>>>
print('向右移动10步后,位置是:', move([1, 0], 10))
print('向上移动430步后,位置是:', move([0, 1], 430))
print('向左移动10步后,位置是:', move([-1, 0], 10))
>>>
向右移动10步后,位置是: (10, 0)
向上移动430步后,位置是: (10, -230)
向左移动10步后,位置是: (0, 30)
>>>
:lol:
origin = (0, 0) # 原点
legal_x = [-100, 100] # x轴的移动范围
legal_y = [-100, 100] # y轴的移动范围
def create(pos_x=0, pos_y=0):
# 初始化位于原点为主
def moving(direction, step):
# direction参数设置方向,1为向右(向上),-1为向左(向下),0为不移动
# step参数设置移动的距离
nonlocal pos_x, pos_y
new_x = pos_x + direction[0] * step
new_y = pos_y + direction[1] * step
# 检查移动后是否超出x轴边界
while new_x>legal_x[1] or new_x<legal_x[0]:
new_x=-new_x+legal_x[0]*2 if new_x < legal_x[0] else -new_x+legal_x[1]*2
pos_x = new_x
# 检查移动后是否超出y轴边界
while new_y>legal_y[1] or new_y<legal_y[0]:
new_y=-new_y+legal_y[0]*2 if new_y < legal_y[0] else -new_y+legal_y[1]*2
pos_y = new_y
return pos_x, pos_y
return moving
move = create()
print('向右移动10步后,位置是:', move([1, 0], 10))
print('向上移动430步后,位置是:', move([0, 1], 430))
print('向左移动410步后,位置是:', move([-1, 0], 410))
|
|