2017-06-12 119 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爲最好的人 –