我正在撰寫一個函式來更改字串中偶數字母的字母大小寫(空格/標點符號被忽略)。即,從"Abcd. Efgh.. Ijkl!"到"abCd. efGh.. IJkL!"
我的代碼只更改第一個字母。最初我認為我的問題是replace()函式,所以我切換到.append()函式,但結果仍然保持不變:['abcd. Efgh.. Ijkl!']
如何更改代碼以捕獲每個回圈的結果?
def mock(string):
new_string=[]
new_letter=""
for letter in string[::2]:
if letter.islower():
new_letter= letter.upper()
new_string.append(string.replace(letter,new_letter))
elif letter.isupper():
new_letter= letter.lower()
new_string.append(string.replace(letter,new_letter))
return new_string
print(mock("Abcd. Efgh.. Ijkl!"))
uj5u.com熱心網友回復:
您應該使用.replace()or.append()但.replace()將替換所有出現的事件(不僅僅是偶數)。您可以將代碼重寫為:
def mock(string):
new_string = []
for index, letter in enumerate(string):
new_letter = letter
if index % 2 == 0:
if letter.islower():
new_letter= letter.upper()
elif letter.isupper():
new_letter= letter.lower()
new_string.append(new_letter)
return "".join(new_string)
您還可以使用串列理解。單行實作將是
return "".join(s if i%2 else s.swapcase() for i, s in enumerate(string))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/388739.html
上一篇:為串列的每個條目添加引號
