huyanmin 发表于 2020-12-20 19:07:35

24课习题略改动就报错,求详解

本帖最后由 huyanmin 于 2020-12-20 19:09 编辑

##24课习题举例:get_digits(12345) ==>

result = []
def get_digit(dec):#自编
   
   
   
   
    if dec:
      result +=
      
      get_digit(dec//10)
      
   
get_digit(12345)
print(result)


result = []
def get_digits(n):
      
#下面是代码原文   
      if n > 0:
            
            
            result.insert(0, n%10)
            get_digits(n//10)
            

get_digits(12345)

print(result)

昨非 发表于 2020-12-21 21:49:17

列表+[数字]语法错误了吧

而且能用insert,append等现有的方法为什么不用

yjptx121 发表于 2020-12-21 22:58:53

报错是:UnboundLocalError: local variable 'result' referenced before assignment,意思是局部变量'result'在赋值之前被引用,很熟悉的感觉吧,话说回来,为什么不用列表的那几个方法,非得用列表去自加呢

huyanmin 发表于 2020-12-22 09:25:44

昨非 发表于 2020-12-21 21:49
列表+[数字]语法错误了吧

而且能用insert,append等现有的方法为什么不用

列表+[数字]语法错误了吧#我认为数字用中括号括起来应该变成列表了,所以能相加,不知道我想的对吗

huyanmin 发表于 2020-12-22 09:29:54

yjptx121 发表于 2020-12-21 22:58
报错是:UnboundLocalError: local variable 'result' referenced before assignment,意思是局部变量'resu ...

result初值是空列表,列表是容器类型,应该是全局变量,函数内部应该也能对其值进行修改啊,迷惑啊,望指正

昨非 发表于 2020-12-22 09:34:35

huyanmin 发表于 2020-12-22 09:25
列表+[数字]语法错误了吧#我认为数字用中括号括起来应该变成列表了,所以能相加,不知道我想的对吗

加是可以加的,列表加列表就是列表的组合
不过你这个报错了,是局部和全局的问题
具体没遇到过不太清楚
建议换个方法

昨非 发表于 2020-12-22 09:35:24

语法方面可以参考这个
https://www.runoob.com/python3/python3-list.html
页: [1]
查看完整版本: 24课习题略改动就报错,求详解