簡體   English   中英

如何使用python-chess庫切片和打印主線?

[英]How do slice and print the mainline with the python-chess library?

有沒有辦法像我們在 Python 上切片列表一樣切片主線? 例如:

  • mainline[start:stop] # 從 stop-1 開始移動
  • mainline[start:] # 通過主線的其余部分移動開始
  • mainline[:stop] # 從頭開始​​移動到 stop-1

或者

  • mainline[start:stop:step] # 從不經過停止,一步一步開始。

這個想法是,擁有main_sicilian對象:

1. e4 c5 2. b4 cxb4 3. d4 d5 4. e5 Nc6 5. a3 Qb6 6. Ne2 Bf5 7. axb4 Nxb4 8. Na3 Rc8 9. Nf4 Bxc2 10. Qg4 e6 *

我想擁有:

main_sicilian[1:5] = 1. e4 c5 2. b4 cxb4 3. d4 d5 4. e5 Nc6 5. a3 Qb6

此外,通過定義它將在哪里完成。 例如,直到白棋的第三步:

1. e4 c5 2. b4 cxb4 3. d4

我嘗試了文檔,但我發現 Python 初學者很難使用它。

嘗試這個。

代碼

import io
import chess
import chess.pgn


pgn = io.StringIO("1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 *")
game = chess.pgn.read_game(pgn)

var = []
for node in game.mainline():
    var.append(node.move)

# Slice up to 3 plies.
sliced_var = var[0:3]

# Convert to SAN format.
b = chess.Board()
san_sliced_var = b.variation_san(sliced_var)
print(san_sliced_var)

輸出

1. e4 c5 2. Nf3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM