2015-10-14 82 views
-4

我要寫一個函數,根據用戶輸入來改變字符串中的某些字符。這似乎很容易,因爲我只是使用替換功能,因爲你可以看到替換成對的列表

myStr = "Python Program" 
myStr = myStr.replace('o', '/') 
print(myStr) 

Pyth/n Pr/gram 

但我被告知這不是一個可接受的解決方案。相反,我應該做同樣的事情,而不使用任何字符串方法。他們還強調,它應該能夠採取輸入對。所以它應該能夠採取

pairs = [['P', '$'], ['o', '/']] 
my_str = "Python Program" 
my_str = substitute_pairs(my_str, pairs) 
print(my_str) 

$yth/n $r/gram 

我想做某種形式的循環,但我真的不知道從哪裏開始。

+5

這看起來像功課。你應該谷歌循環和列表解析。 – postelrich

+0

這裏是一個循環,所以你可以迭代字符串:'對於字符串中的字符'現在檢查你的'字符'對你想要的字母,找到索引,並將其替換:) – Onilol

+0

想作爲重複關閉,但不能非常理解OP要求如此投票結束的內容不清楚。 –

回答

1

只要打開pairs成一個字典,並遍歷字符串替換如果需要的話:

def substitute_pairs(my_str, pairs): 
    replacement = dict(pairs) 
    return ''.join(replacement[c] if c in replacement else c for c in my_str) 

pairs = [['P', '$'], ['o', '/']] 
my_str = "Python Program" 
my_str = substitute_pairs(my_str, pairs) 
print(my_str) 
+0

嗯,這個方法真的很棒。但是OP沒有提到str方法。但是,嘿,誰在乎那個。這是一個很酷的答案。 :) –

0
def sub_pairs(st,pairs): 
    l,r = pairs 
    new_string = [] 
    for ch in my_str: 
     if ch == l[0]: 
      ch = l[1] 
     elif ch == r[0]: 
      ch = r[1] 
     new_string.append(ch) 
    return ' '.join(new_string) 

print(sub_pairs("Python Program",pairs)) 

     $ y t h/n $ r/g r a m