2015-11-02 82 views
-3

我正在做一個遞歸函數,將字符串切片,直到它爲空。當它爲空時,它可以選擇字符,並打印或返回值。在這種情況下,我期待我的函數返回兩個單詞'Hello'和'World'。也許我錯了,但我不明白的是,我的函數不讓我打印或返回字符串。我不尋求幫助,但我想解釋一下:)謝謝Python:函數可以返回一個字符串嗎?

def lsubstr(x): 
    a= '' 
    b= '' 
    if x == '': 
     return '' 
    else: 
     a = a + x[0:] 
     b = b + x[1:] 
     lsubstr(x[2:]) 
     #print (a,b) 
     return a and b 

lsubstr('hweolrllod') 

,所以我改變了我的代碼如下:

def lsubstr(x): 

if len(x) <1: 
     return x 
else: 
     return (lsubstr(x[2:])+str(x[0]),lsubstr(x[2:])+str(x[1])) 
lsubstr('hweolrllod') 

什麼,我想說明的是一個元組這將儲存裝置2對字符並連接下一個的,

錯誤我得到的是 類型錯誤:無法將「元組」對象隱含str的

究竟是GOI ng錯誤,我已經檢查可視化,它在拼接時遇到了麻煩。

+1

是,函數*可以*返回一個字符串。你的問題至少是你的一個問題,就是你根本沒有從遞歸調用返回(例如'return lsubstr(..)')。其次,什麼是'a和b'應該準確返回?! – deceze

+1

'和'運算符通常用於布爾邏輯。我相信你想用'+'連接字符串。 –

+0

你的問題的一部分可能是你沒有對任何調用'lsubstr'返回的值做任何事情。也許你想打印出來或分配給一個變量或東西? – Duncan

回答

2

and關鍵字是一個布爾運算符,這意味着它比較兩個值,並返回其中一個值。我想你想返回一個元組,而不是像這樣:

... 
return (a, b) 

然後你就可以使用訪問值索引操作是這樣的:

a = lsubstr(...) 
a[0] 
a[1] 

或者:

word1, word2 = lsubstr(...) 
+0

@deceze我編輯了我的問題,如果這使得更好。 –

+1

我可能仍然對'和'是一個「布爾」運算符的描述有問題......但其餘部分現在更有意義。 ; o) – deceze

+0

如果我返回類似「return(a,b)」的東西,它給了我一個錯誤 – Rectifier

相關問題