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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:22:02