递归移除字符串中奇数的函数如何兼容负号及非数字字符
递归移除奇数数字函数修改方案
核心修改逻辑
在原有判断奇偶的逻辑前,先校验当前字符是否为数字:
- 非数字字符直接保留,无需做数值判断
- 仅当字符为数字时,再判断是否为偶数,偶数保留、奇数移除
修改后代码
def removeOddDigits(inString): # base case 空字符串直接返回 if inString == "": return inString current_char = inString[0] # 先判断是否为数字 if not current_char.isdigit(): # 非数字直接保留,继续处理剩余字符 return current_char + removeOddDigits(inString[1:]) # 是数字再判断奇偶 if int(current_char) % 2 == 0: return current_char + removeOddDigits(inString[1:]) else: return removeOddDigits(inString[1:]) print(removeOddDigits(input("Enter String:")))
效果验证
- 输入
54364→ 输出464,原有功能正常 - 输入
4234→ 输出424,原有功能正常 - 输入
-123a45→ 输出-2a4,负号和非数字字符正常保留,奇数数字被移除 - 输入
-789→ 输出-8,负号场景适配成功
内容的提问来源于stack exchange,提问作者yungstirjoey666
相关产品推荐
相关产品推荐

