2017-06-12 59 views
0

您好堆栈溢出社区,我在Python 3中的国际象棋移动预测工作,并已陷入障碍,问题是,我试图检查可能的列表根据输入从正方形移动。然而,为了表明这一举措是黑人还是白人,我必须在之后说出一个w。如何检查列表中由字符串和输入组成的名称? 这是第一个举动可能的行动清单:从输入添加到Python中的字符串输入检查列表3

PWA2m = ["A3", "A4", "B3"] 
    PWB2m = ["B3", "B4", "C3", "A3"] 
    PWC2m = ["C3", "C4", "D3", "B3"] 
    PWD2m = ["D3", "D4", "E3", "C3"] 
    PWE2m = ["E3", "E4", "D3", "F3"] 
    PWF2m = ["F3", "F4", "E3", "G3"] 
    PWG2m = ["G3", "G4", "F3", "H3"] 
    PWH2m = ["H3", "H4", "G3"] 
    K1WB1m = ["A3", "C3"] 
    K2WG1m = ["F3", "H3"] 

这是检查迄今:

 wmove = input("What square are you moving from?") 
    if wmove == "": 
     Piece = squares.get(wmove) 

我会把它想输出这样的事情,如果用户已经投入一个有效的正方形:

Possible Moves for PawnWhite: 
    B3, B4, C3, A3 
+0

是,你需要检查,如果B1是你的列表,例如一个问题如果wmove ==“B1”:返回PWB1m标记的列表或类似的东西?如果是这样,我建议有一个全球字典或树结构来存储这些 – ginginsha

+0

您的问题不清楚。 –

+0

你没有一个列表,你有几个不同的变量有列表分配给他们。你究竟想要检查什么?你能举一个你的输入/期望输出的例子吗? –

回答

0

这听起来像你试图通过搜索列表的名称来访问不同片段的列表。但是,程序通常不应该访问变量的名称。一个简单的解决问题的方法是使用dict存储片和它们的可能性列表:

current_state = {"A1":"Kw", "B5":"Qb"} # and so on 
current_possibilities = {"A1": ["B2", "A2"], "B5":["B4", "B6", "C4", "C5", "C6"]} 

然后,您可以访问当前块的位置/在那里他们可以很简单地移动:

print("The piece at {} is a {} and can move to: {}".format(
    input, current_state[input][:-1], current_possibilities[input])) 

其中,由于输入"A1"上面,然后将打印:

The piece at A1 is a K and can move to: ['B4', 'B6', 'C4', 'C5', 'C6'] 
+0

谢谢你,本G很好的回答,我想不起自己。 2为最好的人 –