2011-10-24 35 views
-3

我想提出一個程序,它接受一個句子和garbles它,直到運行通過「degarbler」滑稽ASCI誤差.replace(「X」,「W」)

即使世界可能是一個更好的方式來做到這一點,但我會很感激,如果每個人都告訴我怎麼解決什麼我做錯了

def sencoder (sentence): 
    sentence = sentence.replace ("a","h") 
    sentence = sentence.replace ("s","j") 
    sentence = sentence.replace ("d","k") 
    sentence = sentence.replace ("f","l") 
    sentence = sentence.replace ("b","g") 
    sentence = sentence.replace ("z","t") 
    sentence = sentence.replace ("q","y") 
    sentence = sentence.replace ("w","u") 
    sentence = sentence.replace ("e","i") 
    sentence = sentence.replace ("r","o") 
    sentence = sentence.replace ("x","p") 
    sentence = sentence.replace ("c","b") 
    sentence = sentence.replace ("v","n") 
    sentence = sentence.replace ("m","m") 
    print sentence 

def decoder (sentence): 
    sentence = sentence.replace ("h","a") 
    sentence = sentence.replace ("j","s") 
    sentence = sentence.replace ("k","d") 
    sentence = sentence.replace ("l","f") 
    sentence = sentence.replace ("g","b") 
    sentence = sentence.replace ("t","z") 
    sentence = sentence.replace ("y","q") 
    sentence = sentence.replace ("u","w") 
    sentence = sentence.replace ("i","e") 
    sentence = sentence.replace ("o","r") 
    sentence = sentence.replace ("p","x") 
    sentence = sentence.replace ("b","c") 
    sentence = sentence.replace ("n","v") 
    sentence = sentence.replace ("m","m") 
    print sentence 

sentence = "" 
choice = raw_input ("Do you want to decode or encode: ").lower() 
while sentence != "quit": 
    sentence = raw_input("Enter the code: ") 
    if choice == "encode": 
     decoder(sentence) 
    elif choice == "decode": 
     sencoder(sentence) 
    else: 
     print "Please make a valid decision" 

幫助

+5

什麼問題?你在期待什麼? –

+0

那麼問題是什麼? – Lionel

+5

哦,我的眼睛...嘗試'str.translate'或're.sub'這樣的事情。 – JBernardo

回答

5

這是一個提示:改用translate方法。

>>> import string 

>>> t = string.maketrans("abcdef", "bcdefa") 
>>> "abracadabra".translate(t) 
'bcrbdbebcrb' 

>>> t2 = string.maketrans("bcdefa", "abcdef") 
>>> "bcrbdbebcrb".translate(t2) 
'abracadabra' 
+2

謝謝,至少你幫我解決了問題,而不是「我的眼睛!幫助,哦,上帝」 –

1

你的劇本「我的作品。」也許有什麼困擾你的是你的編碼和解碼的含義是否被切換?

也就是說,輸入「編碼」調用您的解碼器,並輸入「解碼」調用您的編碼器。

正如你在評論中看到的,請使用translate! :)

2

我在做一個程序,通過「degarbler」

注意,這不會與任何類型的輸入句子的工作,需要一個句子,garbles它,直到運行:

encode ("ah") = "hh" decode ("hh") = "aa" 

如果兩個字母可以重疊,則需要更改算法以將部分編碼的數據與輸入字符串分開。

從你的例子來看,如果這是一個問題並不明顯,但我認爲我最好指出它。