2013-12-07 65 views
-1

我想改編我找到的這段代碼,所以我可以建立一個遊戲。這是我在interment上找到的原始代碼,但是當我運行它時,我有兩個我無法解決的錯誤。使用函數和.replace

該代碼最初是爲Python2.5和我使用Python3.3我已經改變了一些明顯的差異任何人都可以請幫助我嗎?

爲什麼不能正常工作?

def replace_all(text, dic): 
    for i, j in dic.iteritems(): 
     text = text.replace(i, j) 
    return text 

my_text = ("Hello everybody.") 

reps = {"H":"|-|", "e":"3", "o":"0"} 

txt = replace_all(my_text, reps) 
print (txt) 

回答

1

Python 3中的字典只具有dict.items()方法,dict.iteritems()已被刪除。

def replace_all(text, dic): 
    for i, j in dic.items(): 
     text = text.replace(i, j) 
    return text 

my_text = "Hello everybody." 

reps = {"H": "|-|", "e": "3", "o": "0"} 

txt = replace_all(my_text, reps) 

工作得很好。

然而,這將是更有效的用在這裏str.translate()

trans_map = {ord(k): v for k, v in reps.items()} 
txt = my_text.translate(trans_map) 

演示:

>>> replace_all(my_text, reps) 
'|-|3ll0 3v3ryb0dy.' 
>>> trans_map = {ord(k): v for k, v in reps.items()} 
>>> my_text.translate(trans_map) 
'|-|3ll0 3v3ryb0dy.' 
0
def replace_all(text, dic): 
    for i in dic: 
     text = text.replace(i, dic[i]) 
    return text