2014-03-01 264 views
2

我剛開始學習如何使用python。我工作的一部分是尋找文本中最長的字符串的長度,在以下情況下定義爲「盒子」:查找最長字符串的長度

def file(box): 
    maxlen=0 
    f=box.splitlines() 
    for i in f: 
    if len(i)>=maxlen: 
     maxlen=len(i) 
    return maxlen 

print file("""abcd efgh ijkl 
on different lines 

I""") 

在這種情況下,我得到的號碼14,而不是18,這是正確的回答...可以請有人幫我解決這個問題?

+1

你什麼也沒得到,因爲'file()'不返回任何東西。相反,您將打印「無」。 –

+0

如果您添加了return語句,那麼您的代碼工作得很好。你正在運行的* real *代碼是什麼? –

+0

好的,我添加了返回maxlen,但是數字並不正確,返回14. –

回答

2

你縮進你return語句太多:

for i in f: 
    if len(i)>=maxlen: 
    maxlen=len(i) 
    return maxlen 

此刻,你告訴它來return環路,這意味着只返回第一行的每一個迭代。在迴路外移動return語句:

for i in f: 
    if len(i)>=maxlen: 
    maxlen=len(i) 
return maxlen 

...它應該工作。

+0

謝謝你一個很好的解釋! –

相關問題