關於遞迴 return none的問題

2021-08-02 18:16:53 字數 1384 閱讀 9246

str1 = raw_input("enter a string -->")

print len(str1)

defremovespace

(str1):

str2=''

if str1[0] != ' '

and str1[-1] != ' ':

return str1

elif str1[0] == ' ':

if str1[-1] == ' ':

str2 = str1[1:-1]

return removespace(str2)

else:

str2 = str1[1:]

return removespace(str2)

elif str1[-1] == ' ':

str2 = str1[:-1]

return removespace(str2)

str3=removespace(str1)

print str3,len(str3)

首先說明,這是正確的**,可以執行

其次說明遇到的問題

str1 = raw_input("enter a string -->")

print len(str1)

defremovespace

(str1):

str2=''

if str1[0] != ' '

and str1[-1] != ' ':

return str1

elif str1[0] == ' ':

if str1[-1] == ' ':

str2 = str1[1:-1]

removespace(str2)

else:

str2 = str1[1:]

removespace(str2)

elif str1[-1] == ' ':

str2 = str1[:-1]

removespace(str2)

str3=removespace(str1)

print str3

這是最初錯的**,大家可以對比一下區別,在呼叫方法的時候缺少return

錯誤的**最終返回的值為none

return語句用於退出函式,向呼叫方返回乙個表示式。return在不帶引數的情況下(或者沒有寫return語句),預設返回none。none是乙個特殊的值,它的資料型別是nonetype。nonetype是python的特殊型別,它只有乙個取值none。

它不支援任何運算也沒有任何內建方法,和任何其他的資料型別比較是否相等時永遠返回false,也可以將none賦值給任何變數。。。

當函式沒有顯式return,預設返回none值

關於遞迴的理解

遞迴的執行順序 最近看了一些遞迴的例子,發現呼叫遞迴之前的語句和遞迴之後的語句執行順序是正好相反的,這是給我的最大感受,具體看如下例子 遞迴例子 include void up and down int int main void void up and down int n 輸出結果 level ...

關於遞迴的思考

之前有接觸過遞迴,看到別人寫的遞迴函式的 好生羨慕,怎麼就能寫這麼好呢?我怎麼就想不到這樣寫呢?如此等等。就拿fibonacci函式來說吧,乙個普通的函式可能這樣寫 def fib n if n 0 return 0 elif n 1 return 1 else return fib n 1 fib...

關於遞迴的記錄

由於專案的原因接觸了三種資料庫,分別是oracle mysql postgresql,在此記錄一下三種資料庫遞迴查詢的用法 以查詢某節點下所有子節點為例 1 oracle 有自帶的遞迴函式,一般最上級我都不用遞迴,直接查全部 select t.from sys postorg t start wit...