坐标移动

111 阅读1分钟

1. 题目

image.png

2. 考点

  1. 字符串切割
  2. 坐标轴 右上代表正数
  3. 读清楚题目 看输出的是字符串还是列表还是元组。
  4. 正则表达的用法 \d 代表匹配数字 {n,m}代表匹配n到m个 其中{n}, {n,}代表匹配n个以及至少n个, ^[ASDW]\d{,2}$核心正则。
  5. 字符串的开始匹配 A、S、D、W 等 startswith方法。
  6. re.match(r'^[ASDW]\d{,2}$',string) 匹配出来的是一个group对象 使用ret.string才可以获取到值,如果没有匹配到 则返回None

3. 核心代码

import re


def test():
    inp = input()
    lis = inp.split(';')
    x = 0
    y = 0
    for i in lis:
        r = re.match(r'^[ASDW]\d{1,2}$', i)
        if r:
            if r.string.startswith('A'):
                num = int(r.string.replace('A', ''))
                x -= num
            elif r.string.startswith('S'):
                num = int(r.string.replace('S', ''))
                y -= num
            elif r.string.startswith('D'):
                num = int(r.string.replace('D', ''))
                x += num
            else:
                num = int(r.string.replace('W', ''))
                y += num
    print(f"{x},{y}")


if __name__ == '__main__':
    # a = "A10;S20;W10;D30;X;A1A;B10A11;;A10;"
    test()