2d板raw_put字符串out_ put board坐标

时间:2012-09-15 04:18:07

标签: python

在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函数内的板。

1 个答案:

答案 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])

编辑以允许案例不敏感