2017-01-26 52 views
-1

我寫了一個程序,將文本轉換爲ASCII數字,然後將ASCII數字轉換回原始文本。現在它可以使用小寫字母和大寫字母,但它不適用於空格。這是我的代碼看起來現在:如何讓這個程序使用空格? (文本到ASCII和ASCII到文本)

message_hidden = input("Enter a message that will be hidden: ") 
hidden = "" 
norm_message = "" 
for i in message_hidden: 
    hidden = hidden + str(ord(i)-23) 
print(hidden) 

for i in range(0, len(hidden), 2): 
    code = hidden[i] + hidden[i+1] 
    norm_message = norm_message + (chr(int(code)+23)) 
print("The first message was: ", norm_message) 

我第一次嘗試重寫第一個循環是這樣的:

for i in message_hidden: 
    if i.isalpha(): 
     hidden = hidden + str(ord(i)-23) 
    else: 
     hidden = hidden + i 
print(hidden) 

,從這裏我不知道我應該怎麼寫第二個循環使其工作。任何人都可以給我一些關於我應該怎麼離開這裏的建議嗎?

+2

請更具體一些。你的代碼有什麼問題? 「不起作用」是什麼意思? –

+1

「現在它可以使用小寫字母和大寫字母,但它不適用於空格。」我希望程序能夠處理帶空格的字符串。就像我輸入「早安」一樣,它將不起作用,但它將與「GoodMorning」和「早上好」等一起工作。 –

回答

1

ord(' ') == 3232-23 == 9,這是個位數。你假設你的數字代碼都是2位數。如果你想保持這個假設,你需要找到一種不同的方式來加密空間角色。要做到這一點找到一個2位數字不是a-zA-Z獲得的數字之一。使用明確的if - 將空格字符加密到該數字。解密時,您還需要使用明確的if來處理這種情況。

或者,找一個不同的功能(其它由23減去),您適用於ord(letter) - 一個這給2位數字爲所有ord()值,你有興趣在這裏是滿足這個屬性無限多的功能。不管你是否能夠找到一個需要較少代碼的應用程序,而不是簡單地將樂隊援助放在空間角色上,這是另一個問題。