Python查找字符串首大写字母的recursive_find_algorithem返回None问题排查
问题诱因
你的递归函数缺少return关键字传递递归调用的返回值:
- 仅当第一个字符是大写字母时,第一层函数直接触发
return str[0]逻辑,能正常返回结果 - 其余场景下,递归调用的返回值没有被当前函数层返回,函数执行完没有显式return语句,会默认返回None
- 即使全小写场景下触发了索引异常返回了提示文本,同样会因为上层没有return传递结果,最终返回None
修复方案
最小改动修复
直接在递归调用前添加return关键字即可,同步把参数名从str改为input_str,避免覆盖Python内置的字符串类型关键字str:
def recursive_find_algorithem(input_str): if input_str[0].isupper(): return input_str[0] else: try: return recursive_find_algorithem(input_str[1:]) except IndexError: return "no uppercase found"
优化版实现
不推荐用异常处理做正常流程控制,可以提前判断空字符串终止递归,逻辑更清晰:
def recursive_find_algorithem(input_str): # 空字符串说明遍历完没有找到大写字母 if not input_str: return "no uppercase found" if input_str[0].isupper(): return input_str[0] return recursive_find_algorithem(input_str[1:])
内容的提问来源于stack exchange,提问作者Marco Nashaat
相关产品推荐
相关产品推荐

