题解 | #坐标移动#python3 直接按要求写 try int except判断是否合法输入
坐标移动
http://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
根据题意,先用split()函数根据';'分割出一个列表接受N条命令。 进行for循环判断每条的命令长度是否符合,len()长度固定为2或者3。不符合则用continue跳出进行下一条的判断。 对于符合长度的命令的首字母进行判断,是AWSD的进行下一次操作。不符合则用continue跳出进行下一条的判断。 首字母通过的命令,用try尝试对命令i的第二位到末位进行int()转化,int(i[2:]),长度前面已经限制为2或者3了,不用担心为空或者超长。不能转化说明不符合数字的规则,用except continue跳出进行下一条的判断。记录数字num。 根据首字母进行xy的加减操作。最后输入即可 def func():
s = input().strip().split(";")
x = 0
y = 0
if len(s) == 0:
print("%d,%d"%(x,y))
return
for i in s:
if len(i) > 3 or len(i) < 2:
continue
if i[0] == "A" or i[0] == "W" or i[0] == "S" or i[0] == "D":
try:
num = int(i[1:])
except:
continue
if i[0] == "A":
x -= num
elif i[0] == "D":
x += num
elif i[0] == "W":
y += num
elif i[0] == "S":
y -= num
else:
continue
print("%d,%d"%(x,y))
func()