python - 为什么函数不返回值而是打印相同的值?
问题描述
看到这个功能: -
def beej(v):
v = sum(map(int, list(str(v))))
if len(str(v)) <=1:
print("printed: {}".format(v))
return v
beej(v)
#outputs
>>> beej(23)
printed: 5
5 # returned
>>> beej(4221)
printed: 9
9 # returned
>>> beej(422199)
printed: 9 #no returned value
>>> beej(999)
printed: 9 #no returned value
所以; 它只是为某些值工作;而不是为了别人。我想知道这背后的原因;以及如何找到这些隐藏的错误。
解决方案
您在递归调用中缺少 return 语句:
def beej(v):
v = sum(map(int, list(str(v))))
if len(str(v)) <= 1:
print("printed: {}".format(v))
return v
return beej(v)
v
只有当第一次调用beej
(即没有递归调用)产生一位数的总和时,您当前的代码才会返回。
推荐阅读
- android - 魅族设备上 Editor.updateCursorPositionMz 出现 NullPointerException
- ios - 如何从 OSS 存储库的源代码中创建和导出 iOS 框架?
- python - 遍历文件删除停用词
- java - Java 泛型:返回有界泛型类型
- python - 使 Flask 路线“通过”到另一条 Flask 路线的最佳方法是什么?
- python - hostname -f 和 socket.getfqdn() 返回不同
- naudio - naudio可能不支持Conexant SmartAudio HD声卡驱动?为什么?
- java - spring 云网关中的身份验证
- python - REST请求中基于python证书的身份验证
- vba - 更改工作表时相交方法错误