【编程题】机器人从原点(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))