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

Python2.7调用列表append报NoneType无对应属性仅奇数n触发如何解决

错误触发原因
  • Python中列表的append()方法为原地修改操作,执行后无返回值(默认返回None)。你代码中奇数分支的df_2 = df_2.append(n-1)语句会将原本的列表对象覆盖为None,后续递归调用sol(n_2, df_2)时传入的df_2为None,尝试调用None.append()自然会抛出属性错误。
  • 仅奇数n报错的原因是:只有当n为奇数时才会进入上述错误代码所在的else分支,偶数分支的append操作未对返回值做赋值操作,因此不会出现列表被覆盖为None的问题。
  • 补充逻辑缺陷:else分支处理完df_2后未将其赋值给函数需要返回的df变量,即使修复了赋值问题,最终返回结果也不符合预期。
代码修正方案

修改else分支的错误赋值语句,同时补全返回值的赋值逻辑即可,修正后的完整代码如下:

def sol(n, df):    
    if n == 1:
        result = df
    elif n == 2 or n == 0:
        df.append(1)
        result = df
    elif n % 2 == 0:
        df.append(n/2)
        df = sol(n/2, df)
    else:
        df_2 = df[:]
        # 去掉赋值操作,append直接修改原列表
        df_2.append(n-1)
        n_2 = n-1
        df_2 = sol(n_2, df_2)
        # 将处理后的df_2赋值给df,保证返回值正确
        df = df_2
        
    return df

df = []
n = input('n == ')
print(sol(n, df))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:15:03