题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
str=input()
str_list=str.split(";")
p={}
for item in str_list:
if len(item)>1 and item[0] in list("ASDW") and item[1:].isdecimal():
p[item[0]]=p.get(item[0],0)+int(item[1:])
p0=(p['W']-p['S'])
P1=(p['D']-p['A'])
print('%d,%d'%(P1,p0))
一、解题思路
- 理解问题:输入字符串,根据输入的第一个方向字母和步数确定坐标移动
- 分析问题:
- 针对输入,要分割成单个片段存储在列表中
- 要提取第一个字符串为方向,第一个后的字符串为步数
- 中间运算的方向和步数存储在字典中,字典的key是方向,value是步数,初始步数默认是0,后面变化的步数要加上现有的步数
- 输出根据(W+,S-),(D+A-)分成两组输出且输出格式要求为(x,y)的格式,打印时改变格式,并打印格式是数字
- 设计算法
- 输入赋给str=input(),分割成单个片段是并赋给str_list=str.split()
- 由于计算要存储在字典中,所以先确定字典p,
- 由于要对字符串中的每一个字符进行操作,所以要遍历每一个字符串,使用for item in str_list:遍历所有字符串
- 遍历字符串时,不是所有的字符都会计算,只有符合题中格式的字符串第二位后的数字才会计算,所以有个if的判断语句+长度>1&第一位是字母&从第二位后是数字:if len(item)>1 and item[0] in list('AWSD') and item[1:].isdecimal()
- 对符合要求的字符串进行计算、存储在字典中,p[item[0]]=p.get(item[0],0)+int(item[1:0])
- 计算最后
- 编写代码
- 测试
算法学习分析与整理 文章被收录于专栏
个人学习算法的文档整理与思考,举一反三,相爱相杀。
