问题:坐标移动_牛客题霸_牛客网
我们定义一个无限大的二维网格上有一个小人,小人初始位置为 (0,0)(0,0) 点,小人可以读取指令上下左右移动。一个合法的指令由三至四个符号组成:
第一个符号为 "A/D/W/S"中的一个,代表小人移动的方向;分别代表向左、向右、向上、向下移动;记某个时刻小人的坐标为 (x,y)(x,y),向左移动一格即抵达 (x−1,y)(x−1,y)、向右移动一格即抵达 (x+1,y)(x+1,y)、向上移动一格即抵达 (x,y+1)(x,y+1)、向下移动一格即抵达 (x,y−1)(x,y−1)。
最后一个符号为 ‘;’,代表指令的结束,该符号固定存在;
∙ ∙中间为一个大于 0 且小于 100 的数字,代表小人移动的距离。特别地,如果这个数字小于 10,那么它可能包含一个前导零,此时也视为合法。
如果你遇到了一个不合法的指令,则直接忽略;例如,指令 "A100;" 是不合法的,因为100 超出了规定的数字范围;"Y10;"也是不合法的,因为 Y 不是 "A/D/W/S"中的一个。
输出小人最终的坐标。
list1 = input().split( ';' ) x , y =[0 , 0] for str1 in list1 : try: if str1[0] not in ("A", "S", "D", "W") : continue if int( str1[1:] ) <= 0 or int( str1[1:] ) >= 100: continue if len( str1 ) != 3 and len( str1 ) != 2 : continue else : if str1[0] == 'A' : x = x - int( str1[1:] ) elif str1[0] == 'D' : x = x + int( str1[1:] ) elif str1[0] == 'S' : y = y - int( str1[1:] ) elif str1[0] == 'W' : y = y + int( str1[1:] ) except: continue print(f"{x},{y}")