python踩雷(二):递归时遇到TypeError: unsupported operand type(s) for *: ‘int‘ and ‘NoneType‘ 解决

    技术2024-12-27  13

    先来看一段递归时的代码:

    # 递归版阶乘 temp = int(input('输入一个正整数: ')) def factorial(n): if n == 1: print(1) else: print( n * factorial(n-1)) factorial(temp)

    起初我的想法是,在factorial()函数里,直接用print打印,在后续直接调用函数就可以得到结果了。 但是,在实际调用时报错如下: TypeError: unsupported operand type(s) for *: 'int' and 'NoneType' 意思是,不支持int类型和非类型数据的运算。 这句话本身是可以理解的,但是究竟错在哪里呢? 于是我又按照正常的格式写了一次代码:

    # 递归版阶乘 temp = int(input('输入一个正整数: ')) def factorial(n): if n == 1: return 1 else: return n * factorial(n-1) print(factorial(temp))

    这次重新运行,就没有报错了。 这说明,是函数里的print出了问题。 于是,我仔细查了print函数的用法。print函数可以输出 各种单个数据类型,但是没有打印组合数据类型的用法。所以,函数里还是老老实实的用return,然后在调用的时候 加上print打印出结果,避免踩雷。 不知道有没有小伙伴和我遇到同样情况的,我的解释仅供参考,毕竟我也是python的初学者,理解还不够深刻。谢谢~

    Processed: 0.011, SQL: 9