在python中,我要做的是拥有一个函数def players_move
,它接受一个len_的raw_input字符串,例如b1,i5
,检查移动是否合法,然后是一个名为{的新函数{1}}获取字符串并输出要在2d板上更新的坐标。
以下是将字符串转换为坐标的方法。它可以工作,如果我要求它返回cords()
,但我不能让它取出字符串然后输出x和y坐标没有错误或它只是返回字符串而不是坐标。
b[2],i[5]
我已经在函数中包含了raw_input以使其工作而没有输出坐标的其他部分但它返回('b'[1]),'i'[5]而不是[1, 1],[[3,8]甚至更好的是它输出[1] [1],[3] [8]如果给出b1,i5它有一个错误,如果尝试并返回x和y它只使用x才能正常工作,但它没有错误任何人都可以帮忙吗?
然后我将需要导入返回的值并更新update_board函数内的板。
答案 0 :(得分:0)
import re
def get_move(move) :
d = {}
d['a']=[[0,0],[1,0],[2,0],[3,0],[4,0],[5,0],[6,0],[7,0],[8,0]]
d['b']=[[0,1],[1,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1]]
d['c']=[[0,2],[1,2],[2,2],[3,2],[4,2],[5,2],[6,2],[7,2],[8,2]]
#made example smaller
def get_parts(part):
parts = re.split("([a-zA-Z]+)",part)
_,ltr,idx =parts
try:
return d[ltr.lower()][int(idx)]
except KeyError:
raise Exception("Letter {0} Does Not Exist".format(ltr))
except IndexErrorError:
raise Exception("Letter {0} Does Not Have Index {1}".format(ltr,idx))
start,end = move.split(",")
return get_parts(start),get_parts(end)
print get_move(raw_input('enter starting pos and end pos'))
结果
enter starting pos and end posa3,c4
([3, 0], [4, 2])
编辑以允许案例不敏感