题解 | #坐标移动#
坐标移动
http://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
Python 3 解题步骤
第 1 步: 建立一个列表,获取输入
input_1 = input()第 2 步:将用分号 ;分隔开的字符串进行一个切割,并放入一个列表中
我用的方法是,查找 ; 在最开始 input_1 的字符串中的位置,
然后将每个分号前的字符串截取出来作为一个新的字符,放入 str_list 中(这里不管这些字符是不是合法,后面再做检验)
然后更新原来的 str_list 的长度,再循环
str_list = [] while ';' in input_1: pot = input_1.find(';',0,len(input_1)) str_position = input_1[0:pot] if len(str_position) == 3: str_list.append(str_position) input_1 = input_1[(pot+1):]第 3 步:对 input_1 中的数值进行一个检验,分别累计 A D S W 的值,最后输出
这里我为了自己检验,把每个 影响了最终坐标的 合法坐标 都输出了 ,就是 print(str_position) 那里,也可以不输出
x = 0 y = 0 for str_position in str_list: if str_position[0]== 'A': if str_position[1:].isdigit()== True: print(str_position) x = x -int(str_position[1:]) for str_position in str_list: if str_position[0]== 'D': if str_position[1:].isdigit()== True: print(str_position) x = x + int(str_position[1:]) for str_position in str_list: if str_position[0]== 'W': if str_position[1:].isdigit()== True: print(str_position) y = y + int(str_position[1:]) for str_position in str_list: if str_position[0]== 'S': if str_position[1:].isdigit()== True: print(str_position) y = y - int(str_position[1:]) original = [x,y] print(x,',',y)
上面的式子检验了几次,应该问题不大,如果有哪位姐妹发现有 bug 请告知,谢啦!