|
发表于 2023-10-6 00:52:21
|
显示全部楼层
在函数 jinzhizhuanhua(num, fundamention) 中,当 num < fundamention 时,虽然将 num 转换成相应进制的结果压入了栈 ub 中,但没有显示地返回 ub。因此,当 num < fundamention 时,函数没有返回值,即返回 None。因此,当调用 jinzhizhuanhua(10, 2) 时,ub 并没有被赋值为 Stack 类型的对象,而是 None。因此,在调用 ub.size() 时,会出现 'NoneType' object has no attribute 'size' 的错误。
为了解决这个问题,可以在 num < fundamention 的情况下,显示地返回 ub,即 return ub。这样,当 num < fundamention 时,函数也会返回一个 Stack 类型的对象。修改后的代码如下所示:
- from pythonds.basic import Stack
- ub = Stack()
- def jinzhizhuanhua(num, fundamention):
- dic = "0123456789ABCDEF"
- if num < fundamention:
- ub.push(dic[num])
- return ub
- else:
- ub.push(dic[num % fundamention])
- jinzhizhuanhua(int(num//fundamention),fundamention)
- return ub
- ub = jinzhizhuanhua(10, 2)
- for i in range(ub.size()):
- print(ub.pop(), end="")
复制代码 |
|