这题我是一点点试的,跟大佬们相比复杂了一点,但是通过了,思路比较清晰 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