Python生成蛇形数组时遇'NoneType' object has no attribute 'copy'错误求助
解决蛇形数组生成中的NoneType错误
错误原因
你代码里的supl.reverse()是原地修改列表,它不会返回新的列表,执行后返回值是None。第一次循环后你把supl赋值成了None,第二次循环调用supl.copy()自然就触发了'NoneType' object has no attribute 'copy'错误。
另外你原代码的逻辑还有问题:初始的supl只包含第一行的数字,后续行的数字范围完全不对,得重新调整生成每一行数字的逻辑。
修正后的代码
正确的思路是:每一行的数字范围是i*length +1到(i+1)*length(i为行索引,从0开始),偶数行(第0、2...行)正序排列,奇数行(第1、3...行)倒序排列:
# 读取输入的高度和长度 height, length = map(int, input().split()) snake_array = [] for row_idx in range(height): # 计算当前行的起始和结束数字 start_num = row_idx * length + 1 end_num = start_num + length # 生成当前行的数字列表 current_row = list(range(start_num, end_num)) # 奇数行反转 if row_idx % 2 == 1: current_row.reverse() snake_array.append(current_row) # 格式化打印结果 for row in snake_array: print(' '.join(map(str, row)))
代码说明
- 用
map(int, input().split())直接读取并转换输入的两个整数,比列表推导更简洁。 - 每一行单独计算数字范围,避免了原代码中复用
supl导致的数字重复问题。 current_row.reverse()是原地反转,但这里不需要赋值,因为我们已经生成了当前行的列表,反转后直接加入结果数组即可;如果不想原地修改,也可以用切片current_row = current_row[::-1]生成新的反转列表。
内容的提问来源于stack exchange,提问作者jipy
相关产品推荐
相关产品推荐

