如何用Python编写输出二进制棋盘的chessboard函数
Python chessboard函数隔行切换起始字符修改方案
问题核心原因
你当前的代码所有行都固定以1作为起始字符,没有新增行维度的状态标记来切换每一行的起始值,因此所有行输出内容完全一致。
修改后的完整代码
def chessboard(n): height = n # 标记当前行是否以1开头,第一行默认是1开头 start_with_one = True while height > 0: length = n current_start = start_with_one while length > 0: print("1" if current_start else "0", end="") length -= 1 # 切换下一个字符的取值 current_start = not current_start # 打印完一行后换行 print() # 下一行起始字符翻转 start_with_one = not start_with_one height -= 1
主要修改点说明
- 新增
start_with_one布尔变量记录当前行的起始字符规则,每打印完一行就翻转该变量的值,实现隔行切换开头 - 内层循环新增
current_start变量控制当前位置的输出值,每打印一个字符就翻转一次,保证单行走1、0交替的规则 - 修正了原代码中提前break的逻辑问题,避免行数打印不全、换行异常的问题
运行测试
调用chessboard(3)时输出结果如下:
101 010 101
符合预期要求。
内容的提问来源于stack exchange,提问作者sc0rched
相关产品推荐
相关产品推荐

