2017-04-04 153 views
0

當提供text作爲輸入字符串,並且rule作爲輸入整數時,挑戰是找到ASCII值sum,然後根據新的數值轉換回字符串。PYTHON basic ascii加密函數

我的代碼出現在正確的軌道上,但給出ascii_encrypt("a",1),例如,我的當前輸出是b'b',應該是'b'。我是新來的編碼功能,我猜是讓我絆倒了。

def ascii_encrypt(text, rule): 
    text = sum([ord(c) for c in text]) 
    if not text: 
     return "" 
    else: 
     encrypted_text = chr(text + rule) 
     return encrypted_text.encode('utf-8') 

幫助想要!謝謝!

+0

你爲什麼用UTF-8編碼結果? – user2357112

+0

一個測試用例有混合字母,所以我認爲這將解釋爲 –

+1

我不明白這行代碼的用法:'text = sum([ord(c)for c in text])'。你想用大於1個字符的字符串來使用這個函數嗎? –

回答

2

只需刪除,.encode('utf-8')。你不需要對它進行編碼,這是造成你的問題。您不能包含此部件並實現所需的功能。

def ascii_encrypt(text, rule): 
    text = sum([ord(c) for c in text]) 
    if not text: 
     return "" 
    else: 
     encrypted_text = chr(text + rule) 
     return encrypted_text 

print(ascii_encrypt("a",1)) 
+0

如果我不想打印,而只是返回值而不進行編碼,該怎麼辦? –

+0

的確如此,你不需要打印或編碼它。將字符串作爲字節串發送不是一個好主意。只留下不編碼的字符串。如果你可以標記爲解決方案,它會有很大的幫助。 – Neil

+0

這裏是我用上面的代碼(減去打印功能)得到的:'UnicodeEncodeError:'ascii'編解碼器不能編碼字符'\ u0693'在位置11:序號不在範圍內(128)' –