python - AttributeError:“NoneType”对象没有属性“符号”python-chess
问题描述
我正在对位置进行评级,但我不知道一块是否在某个方格上。当我运行我的代码时,我得到
AttributeError:“NoneType”对象没有属性“符号”
这是代码:
for i in range(0,8):
for j in range(0,8):
if i == 0:
s='A'
if i == 1:
s='B'
if i == 2:
s='C'
if i == 3:
s='D'
if i == 4:
s='E'
if i == 5:
s='F'
if i == 6:
s='G'
if i == 7:
s='H'
if j == 0:
e='1'
if j == 1:
e='2'
if j == 2:
e='3'
if j == 3:
e='4'
if j == 4:
e='5'
if j == 5:
e='6'
if j == 6:
e='7'
if j == 7:
e='8'
piece = board.piece_at(getattr(chess,s+e))
print(piece.symbol())
解决方案
没有棋子的地方(比如起跑板上的 e4),board.piece_at()
将返回None
. 因此,您应该piece == None
在询问其符号之前检查是否。
请注意,您的代码可以像这样更有效率:
import chess
board = chess.Board()
for i in chess.SQUARES :
piece = board.piece_at(i)
if piece != None :
print(piece.symbol())
推荐阅读
- ios - 通知操作中的 Appdelegate 启动选项为零
- r - stat_density_2d 绘图忽略填充美学
- chart.js - 在 chart.js 折线图上为距离与海拔设置自定义 X 轴刻度
- curl - Scrapy 没有从 curl scrapyd 设置中获取设置
- f# - 如何在 F# 中创建可变的泛型函数
- python - 类没有返回数据的属性错误
- xml - Ant Builds,但所有的junit测试都失败了
- python - 将二维浮点数组格式化为 2 位小数的最短语法是什么?
- c++ - c++ 为什么ifstream get() 函数返回无法识别的特殊字符?
- sql - 通过分隔符解析 VARCHAR 行并在 Oracle SQL 中更新表行