使用递归仅拼接字符串中的字母并返回,修复现有代码NoneType报错
问题原因
- 函数所有分支都没有显式返回值,默认返回
None,尝试将字符串和None做拼接操作时就会触发类型错误 join方法使用错误:str.join(iterable)的作用是将可迭代对象中的元素用调用者字符串拼接,原有写法不会修改原decoded变量,也没有返回拼接结果- 缺少明确的递归终止基线条件,递归逻辑不完整
修复后的代码
def decoder(encryptedStr): # 基线条件:字符串为空时返回空串,终止递归 if len(encryptedStr) == 0: return "" # 首字符是字母,返回当前字符+递归处理剩余部分的结果 if encryptedStr[0].isalpha(): return encryptedStr[0] + decoder(encryptedStr[1:]) # 不是字母直接返回递归处理剩余部分的结果 else: return decoder(encryptedStr[1:])
调用示例
print(decoder("a1b2c3!@#d")) # 输出:abcd
内容的提问来源于stack exchange,提问作者unstuck.me
相关产品推荐
相关产品推荐

