Skip to main content
 首页 » 编程设计

python之属性错误 : 'NoneType' object has no attribute 'append' (recursion function)

2025年05月04日23rubylouvre

我正在尝试获得所有可能的骰子排列。下面是我的代码。

def PrintAllPerms(n, arr, str_): 
    if (n == 0): 
        print str_ 
        arr.append(str_) 
        return arr 
    else: 
        for i in ["1","2","3","4","5","6"]: 
            str_ = str_ + i 
            arr = PrintAllPerms(n-1,arr,str_) 
            str_ = str_[:-1] 
 
PrintAllPerms(2,[],"") 

但我只打印了这么多就出现了以下错误。

PrintAllPerms(2,[],"") 
 
11 
12 
13 
14 
15 
16 
21 
 
<ipython-input-7-d03e70079ce2> in PrintAllPerms(n, arr, str_) 
      2     if (n == 0): 
      3         print str_ 
----> 4         arr.append(str_) 
      5         return arr 
      6     else: 
 
AttributeError: 'NoneType' object has no attribute 'append' 

为什么它打印到 2,1 呢?

处理这个问题的正确方法是什么?

请您参考如下方法:

这是由于以下行:

arr = PrintAllPerms(n-1,arr,str_) 

如果 else 路径,您的 PrintAllPerms 函数不会返回任何内容,因此被视为返回 None。所以 arr 被设置为 None。