布尔变量未在每次for循环结束后反转,图案生成异常求助
问题分析与解决
期望输出
1 0 1 1 0 1 0 1 0 1 1 0 1 0 1
实际输出
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
原代码
N=5 bool_ = True for row in range(1,N+1): for i in range(1, row+1): if i>1: print(' ', end='') print(int(bool_), end= '') bool_ = not bool_ print()
问题原因
你的bool_变量在所有循环外初始化,每一行结束后没有重置起始状态,导致下一行的起始值继承了上一行结尾的状态。比如第三行本应从1开始,但因为第二行结束后bool_是False,所以第三行开头输出0,出现错误。
正确逻辑是:奇数行以1开头,偶数行以0开头,每一行的起始状态由当前行号决定,而非上一行的结尾。
修改后的代码
N=5 for row in range(1,N+1): # 根据行号设置每一行的起始值:奇数行开头为1(True),偶数行开头为0(False) bool_ = row % 2 == 1 for i in range(1, row+1): if i>1: print(' ', end='') print(int(bool_), end='') bool_ = not bool_ print()
内容的提问来源于stack exchange,提问作者alphabomber
相关产品推荐
相关产品推荐

