You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何range(9)包含0,get_chess_square_color(0,8)却返回空值?

问题解析

你困惑的核心不是range的用法,而是函数里的条件判断写岔了!

先看原函数里的判断逻辑:if not (column and row in range(9)),这里的运算顺序是先判断column的布尔值(Python里0会被视为False),再判断row in range(9),然后把两个结果做逻辑与。当你传column=0时,column本身是False,所以整个column and row in range(9)的结果就是False,取反后变成True,函数直接返回空字符串,这就是那条断言能成立的原因。

range(9)确实包含0到8的所有整数,和你举的字符串索引用法没关系。你预期的逻辑应该是同时检查column和row都在合法范围内,所以正确的条件写法应该是:

if not (column in range(9) and row in range(9)):

另外还要提一句,原函数里column == row返回white的逻辑也不符合国际象棋棋盘的规则——正确的颜色判断应该是(column + row) % 2 == 0,这样相邻格子才会交替颜色。修正后的完整函数可以写成:

def get_chess_square_color(column, row):
    if not (column in range(9) and row in range(9)):
        return ''
    return 'white' if (column + row) % 2 == 0 else 'black'

内容的提问来源于stack exchange,提问作者Frizanon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 22:00:54