2015-09-25 129 views
-1

我需要製作一個函數,它需要一個隨機字符的文本字符串,將小寫字母放在一起,將大寫字母放在一起,並將剩下的字符扔掉。我已經做了一個迭代的解決方案,這一個工程,但顯然它不是遞歸 - 我必須使其遞歸遞歸循環文本

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

還有你的代碼** **是遞歸的,所以它不清除的問題是什麼。 – jonrsharpe

回答

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)