|
发表于 2019-8-8 00:32:24
|
显示全部楼层
刚开始学小甲鱼的Python,我也实现一个版本,和小甲鱼的版本略有不同,请大家指点:
def create(posX = 0, posY = 0):
# 用户的起始位置,默认在坐标原点(0, 0)
# @posX: X轴的起始位置
# @posY: Y轴的起始位置
def moving(direction, step):
# 用户移动的方向和步长
# @direction: 1表示向上(向右),-1表示向下(向左)
# @step: 移动的步长
nonlocal posX, posY
# 用户移动后的位置
newPosX = posX + direction[0] * step
newPosY = posY + direction[1] * step
# 判断时候超出X轴的边界,若超出边界,则从另一侧进入区域
if newPosX < legalX[0]:
posX = legalX[1] - (legalX[0] - newPosX) + 1
elif newPosX > legalX[1]:
posX = legalX[0] - (legalX[1] - newPosX) - 1
else:
posX = newPosX
# 判断时候超出Y轴的边界,若超出边界,则从另一侧进入区域
if newPosY < legalY[0]:
posY = legalY[1] - (legalY[0] - newPosY) + 1
elif newPosY > legalY[1]:
posY = legalY[0] - (legalY[1] - newPosY) - 1
else:
posY = newPosY
return posX, posY
return moving
########### 全局区域 ##############
# 地图范围
legalX = [-100, 100]
legalY = [-100, 100]
# 用户1的移动轨迹
user1 = create()
print("[用户1]出现在坐标原点", (0, 0))
print(" 向左走10步:", user1([1, 0], 10))
print(" 向上走30步:", user1([0, 1], 30))
print(" 向下走40步:", user1([0, -1], 40))
print(" 向左走111步:", user1([-1, 0], 111))
# 用户2的移动轨迹
user2 = create(-100, -100)
print("[用户2]出现在左下角", (-100, -100))
print(" 向左下走1步:", user2([-1, -1], 1))
print(" 向左下走100步:", user2([-1, -1], 100))
print(" 向左上走50步:", user2([-1, 1], 50)) |
|