这题我是一点点试的,跟大佬们相比复杂了一点,但是通过了,思路比较清晰 1、先用正则等手段淘汰非法输入 2、下面就简单了,一个for循环解决
``` python []
import re
while True:
try:
lst=input().split(";")#以分号结尾
tmp=[]#加入一个临时数组
for i in lst:
if len(i)<=3 and not str(i[-1:]).isalpha():#len(i)<=3解决B10A11这种情况以及x100这种情况,排除3位问题,not str(i[-1:]).isalpha()解决A1A这种问题
tmp.append(i)
#print(tmp)
tmps="".join(tmp)
#print(tmps)
match="[A|D|S|W][0-9]+"#正则匹配,[A|D|S|W]匹配一个,[0-9]匹配数字,+匹配一个或多个
lstfind=re.findall(match, tmps)#获取所有经过正则匹配的数组,示例:['A10', 'S20', 'W10', 'D30', 'A10']
#print(lstfind)#测试用
x=0#横坐标
y=0#竖坐标
for i in lstfind:
if "A" in i:
t=int(i[1:])#获取数字
x=x-t
if "D" in i:
t=int(i[1:])
x=x+t
if "W" in i:
t=int(i[1:])
y=y+t
if "S" in i:
t=int(i[1:])
y=y-t
print("{0},{1}".format(x, y))
except:
break