如何使用 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
此外,通过定义结束位置。例如,直到白方第 3 步:
1. e4 c5 2. b4 cxb4 3. d4
我尝试了 documentation,但我发现对于 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
有没有办法像我们在 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
此外,通过定义结束位置。例如,直到白方第 3 步:
1. e4 c5 2. b4 cxb4 3. d4
我尝试了 documentation,但我发现对于 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