2015-10-14 77 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