红衣怪 发表于 2020-5-31 14:26:45

Python递归

def get_digits(n):
    list1 = []
    if n:
      i = n % 10
      list1 = get_digits(n // 10)
      return list1.append(i)
    else:
      return list1
num = int(input('请输入数字:'))
list2 = get_digits(num)
print(list2)

为什么运行代码后会报错,求助(下面是报错内容)
    return list1.append(i)
AttributeError: 'NoneType' object has no attribute 'append'

wuqramy 发表于 2020-5-31 14:28:58

list1在get_digits(n // 10)之后就变成了None

Twilight6 发表于 2020-5-31 14:33:05

为什么运行代码后会报错,求助
因为你只有最后一次递归返回的是一个列表,前面的递归返回的全部都是 None
list1.append(i) 并没有返回值,导致你的递归返回值为 list1 = None
对 None 使用append 方法导致报错

红衣怪 发表于 2020-5-31 14:38:06

Twilight6 发表于 2020-5-31 14:33
因为你只有最后一次递归返回的是一个列表,前面的递归返回的全部都是 None
list1.append(i) 并没有返回 ...

懂了,我再改改代码

zwhe 发表于 2020-6-5 10:43:01

{:7_126:}
页: [1]
查看完整版本: Python递归