python练习题,关于点的移动的问题

【编程题】机器人从原点(0,0)开始在平面中移动。 机器人可以通过给定的步骤向上,向下,向左和向右移动。 机器人运动的痕迹如下所示:

UP 5

DOWN 3

LETF 3

RIGHT 2

方向之后的数字是步骤。 请编写一个程序来计算一系列运动和原点(由input输入)之后距当前位置的距离。如果距离是浮点数,则只打印最接近的整数。

例:如果给出以下元组作为程序的输入:

UP 5

DOWN 3

LETF 3

RIGHT 2

然后,程序的输出应该是:2

x0=x1=y0=y1=0
while True:
    inp = input('请输入方向和数字空格隔开,或q退出:')    
    if inp == 'q':
        break
    a=inp.split()[0].lower()
    b=int(inp.split()[1])

    if a=='up':
        y1+=b
    elif a=='down':
        y1-=b
    elif a=='left':
        x1-=b
    elif a=='right':
        x1+=b
dis=round(((x1-x0)**2+(y1-y0)**2)**0.5)
print(f'distance:{dis}')

运行结果:

请输入方向和数字空格隔开,或q退出:UP 5    
请输入方向和数字空格隔开,或q退出:DOWN 3
请输入方向和数字空格隔开,或q退出:LEFT 3
请输入方向和数字空格隔开,或q退出:RIGHT 2
请输入方向和数字空格隔开,或q退出:q
distance:2


import re
inp = ''
pos = [0,0]
cur = [0,0]
while inp != 'exit':
    inp = input('请输入方向和数字(例如:left 4),或 exit 退出:').lower()
    if inp == 'exit':
        break;
    m = re.match('^(left|right|up|down)\s+(\d+)', inp)
    if m != None:
        arr = m.group(1)
        step = m.group(2)
        if arr == 'up':
            cur[0] -= int(step)
        elif arr == 'down':
            cur[0] += int(step)
        elif arr == 'left':
            cur[1] -= int(step)
        else:
            cur[1] += int(step)

print('当前位置:',cur,',距离原点:',int((cur[0]**2+cur[1]**2)**0.5))

img