所以我有這個函式 swapplaces(s, c, r) 它接受一個字串 s、一個長度為 1 的字串 c 和一個長度為 1 的字串 r。該函式將回傳一個新字串,其中所有出現的字符 c由 r 代替。大寫和小寫字母的處理方式不同。
例子
swapplaces("let","l","g") == "get"
swappalces("chip","c","s") == "ship"
swapplaces("lay low for lola","l","s") == "say sow for sosa"
swapplaces("OcapudoliciOus", "O", "e") == "ecapudolicieus"
到目前為止,這是我的代碼
def listToString(s):
str1 = " "
return (str1.join(s))
def swapplaces(s,c,r):
q = list(s)
for c in q:
q.replace(c,r)
return listToString(q)
但是,我的代碼根本不起作用,我應該做哪些更改??
uj5u.com熱心網友回復:
如前所述,x.replace(y, z)將用字符 z 替換字串 x 中所有 y 的實體。
旁注:小心你的變數命名。迭代器與函式for c in q的輸入變數同名。這意味著當你到達你的 'c' 時不再是函式輸入變數而是迭代器。考慮:cswapplaces()q.replace(c,r)
def test(a):
q = list(a)
print(f'Before {a}')
for a in q:
print(a)
print(f'After {a}')
test("Hello")
輸出
Before Hello
H
e
l
l
o
After o
uj5u.com熱心網友回復:
您的函式是否需要像現在這樣復雜?您的老師是否禁止您使用某些功能或方法?我能看到的最簡單的解決方案是:
def swapplaces(s, c, r):
return s.replace(c, r)
這足夠了嗎?我猜你有一些你沒有分享的限制。這是真的?您是否需要將輸入字串作為串列進行處理?
你可以通過確保c和r只有一個字符來使它更健壯一點......
def swapplaces(s, c, r):
c, r = c[:1], r[:1]
return s.replace(c, r)
此外,您的 listToString() 有一個錯誤。我會改變:
str1 = " "
到:
str1 = ""
uj5u.com熱心網友回復:
這是對您的代碼的更正。
def listToString(s):
str1 = ""
return (str1.join(s))
def swapplaces(s,c,r):
q = s
for c in q:
q.replace(c,r)
return listToString(q)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/368877.html
