Python 2d线路板原始输出线输出线路板坐标
在python中,我试图做的是使用一个函数Python 2d线路板原始输出线输出线路板坐标,python,Python,在python中,我试图做的是使用一个函数def players\u move,该函数接受一个len 5的原始输入字符串,例如b1,i5,检查移动是否合法,然后使用一个名为cords()的新函数,该函数接受字符串并输出要在2d板上更新的坐标 下面是我将字符串转换成坐标的方法。如果我要求它返回b[2],i[5],它可以工作,但是我不能让它获取字符串,然后输出没有错误的x和y坐标,或者它只返回字符串而不是坐标 def cords (): move=raw_input('enter start
def players\u move
,该函数接受一个len 5的原始输入字符串,例如b1,i5
,检查移动是否合法,然后使用一个名为cords()
的新函数,该函数接受字符串并输出要在2d板上更新的坐标
下面是我将字符串转换成坐标的方法。如果我要求它返回b[2],i[5]
,它可以工作,但是我不能让它获取字符串,然后输出没有错误的x和y坐标,或者它只返回字符串而不是坐标
def cords ():
move=raw_input('enter starting pos and end pos')
a=[[0,0],[1,0],[2,0],[3,0],[4,0],[5,0],[6,0],[7,0],[8,0]]
b=[[0,1],[1,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1]]
c=[[0,2],[1,2],[2,2],[3,2],[4,2],[5,2],[6,2],[7,2],[8,2]]
d=[[0,3],[1,3],[2,3],[3,3],[4,3],[5,3],[6,3],[7,3],[8,3]]
e=[[0,4],[1,3],[2,4],[3,4],[4,4],[5,4],[6,4],[7,4],[8,4]]
f=[[0,5],[1,3],[2,5],[3,5],[4,5],[5,5],[6,5],[7,5],[8,5]]
g=[[0,6],[1,3],[2,6],[3,6],[4,6],[5,6],[6,6],[7,6],[8,6]]
h=[[0,7],[1,3],[2,7],[3,7],[4,7],[5,7],[6,7],[7,7],[8,7]]
i=[[0,8],[1,3],[2,8],[3,8],[4,8],[5,8],[6,8],[7,8],[8,8]]
xx = move[0], int(move[1])
#yy = move[3], int(move[4])
xxx = xx[0],[xx[1]]
#yyy= yy[3],[yy[4]]
return xxx#,yyy
我已经将原始输入包含在函数中,使其在没有其他部分的情况下工作,它是用来输出坐标的,但它返回('b'[1]),'I'[5]而不是[1,1],[3,8],或者更好的是,它输出[1][1],[3][8]如果给定b1,i5,它有一个错误,如果尝试并返回x和y,它就不能正确地处理x,但它没有错误,有人能帮忙吗
然后我需要导入返回值,并在update_board函数中更新board
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])
编辑为允许不区分大小写此函数将导致错误…请发布一个简短的自包含代码示例来演示问题…我一直在尝试的是让我们调用用户输入字符串的名称导入的内容称为移动我已尝试x_cord=move[0][move[1]]Y_cord=move[3][move[4]]但是它返回的数字是一个sting,比如b['1'],i['5'],所以我尝试了x_cord=move[0]int(move[1]),但这使得它返回b1,i5,而不是b[1],i[5],所以它可以返回cord,我想要代码做的是接收b2,i5并返回[2,1],[5,8]x是起始位置,y是peice移动到的位置,我将不得不拆分[b,2]将[2][1]用于更新[5,8]的板。一旦我将用户输入转换为indexs@esaelPsnoroMoN:请阅读感谢它的工作:)我忘了要求它不关心它是小写还是大写,如B1、i5或B1、D3,如果我加倍行数,如d['a']=[[0,0]、[1,0]、[2,0],[3,0]、[4,0]、[5,0]、[6,0]、[7,0]、[8,0]]d['A']=[0,0]、[1,0]、[2,0]、[3,0]、[4,0]、[5,0]、[6,0]、[7,0]、[8,0]]是一种使其在大小写上不重要的简单方法,而不是为较低和较高的大小写添加新行