12python切片實現trim()

2021-10-01 19:33:57 字數 2361 閱讀 4885

利用切片操作,實現乙個trim()函式,去除字串首尾的空格,注意不要呼叫str的strip()方法

用於移除字串頭尾指定的字元(預設為空格或換行符)或字串行。

test =

"000python000world000"

print

(test.strip(

"0")

)

執行結果

python000world
def

trim

(s):

while s[:1

]==" ":

# 判斷第乙個字元是否為空格,若為真利用切片刪除這個字元

s = s[1:

]while s[-1

:]==" "

:# 判斷最後乙個字元是否為空格,若為真利用切片刪除這個字元

s = s[:-

1]return s

test =

" python "

print

(trim(test)

)

執行結果

python
def

trim

(s):

if s[:1

]==" ":

# 判斷第乙個字元是否為空格

s = trim(s[1:

])# 利用遞迴改變s並再次進行判斷

if s[-1

:]==" "

:# 判斷最後乙個字元是否為空格

s = trim(s[:-

1])# 利用遞迴改變s並再次進行判斷

return s

test =

" python "

print

(trim(test)

)

執行結果

python
def

trim

(s):

while s[0]

==" "

: s = s[1:

]while s[-1

]==" ":

s = s[:-

1]return s

test =

" python "

print

(trim(test)

)

執行結果

python
這裡看似沒有任何問題,我們成功的定義了乙個trim()函式並實現其功能

但經過不斷的嘗試,終於發現了問題

當我們傳入乙個空字元時程式會報錯

def

trim

(s):

while s[0]

==" "

: s = s[1:

]while s[-1

]==" ":

s = s[:-

1]return s

test =

""print

(trim(test)

)

執行結果

traceback (most recent call last)

: file "e:/pycharm/homework12.py"

, line 27,in

print

(trim(test)

) file "e:/pycharm/homework12.py"

, line 20

,in trim

while s[0]

==" "

:indexerror: string index out of range

索引器錯誤:字串索引超出範圍

而我們使用之前的正確方式則不會報錯

def

trim

(s):

while s[:1

]==" ":

s = s[1:

]while s[-1

:]==" "

:

s = s[:-

1]return s

test =

""print

(trim(test)

)

執行結果(空,不報錯)

究其原因我認為是s[0]和s[:1]的區別所導致的

當序列是空序列,這時候用[:1]取第乙個元素是空,不會報錯,而用[0]取由於超過索引範圍則會報錯

12,python實現 gevent協程

import gevent from gevent import monkey import time 打補丁,讓程式能夠識別系統的耗時操作以及網路資源請求的耗時操作 monkey.patch all def work1 獲取當前協程 print gevent.getcurrent while tr...

12 Python 檔案處理

資料夾 得到當前工作目錄,即當前python指令碼工作的目錄路徑 os.getcwd 返回指定目錄下的所有檔案和目錄名 os.listdir 函式用來刪除乙個檔案 os.remove 刪除多個目錄 os.removedirs r c python 檢驗給出的路徑是否是乙個檔案 os.path.isf...

12 python基礎 函式

12.1 函式簡介一段具有特定功能的 可重用的語句組 函式規則 1.def 2.return 表示式 結束函式,不帶表示式的return相當於返回 none 作用 降低程式設計難度和 復用def 函式名 引數 引數是佔位符 函式體return 返回值 引數是輸入 函式體是處理 結果是輸出 ipo 函...