我需要创建一个函数,它接受随机字符的文本字符串,将小写字母放在一起,将大写字母放在一起,然后抛弃其余的字符。我已经对此做了一个迭代解决方案,这个可行,但显然它不是递归的 - 我必须使其递归!
check_lower
/ check_upper
是检查msg
中字符串的一部分是否包含较低字符或较高字符的函数
def split_recursive(msg, low_msg='', up_msg=''):
if not msg:
return (low_msg, up_msg)
if check_lower(msg[0]):
low_msg += msg[0]
if check_upper(msg[0]):
up_msg += msg[0]
return split_recursive(msg[1:], low_msg, up_msg)
要查看的示例字符串是
test = 'Jj9312L*xzc-,zt13_312GjASk3'
所以最后你会跑
>>> split_recursive(test)
('jxzcztjk', 'JLGAS')
答案 0 :(得分:1)
对于递归,请考虑基本情况:
def split_recursive(msg, lower, upper):
if msg == '':
return lower, upper
然后向上构建:
def split_recursive(msg, lower, upper):
if msg == '':
return lower, upper
else:
if msg[0].isupper():
return split_recursive(msg[1:], lower, upper + msg[0])
elif msg[0].islower():
return split_recursive(msg[1:], lower + msg[0], upper)
else:
return split_recursive(msg[1:], lower, upper)