2015-06-19 65 views
0

我想無論用戶進入ASCII碼轉換,但使用這種方法似乎沒有工作,我不知道是什麼問題是什麼?轉換的ASCII字符的字符串轉換成他們的ASCII碼,並將其分配給一個變量

所有的
message = input ("Enter message to be encrypted: ") 
message_numbers = "" 

for i in message: 
    message_numbers1 = [ord(c) for c in message] 
    message_numbers = message_numbers + message_numbers1 

print (message_numbers) 
+0

什麼。 .. 什麼?!你正在遍歷'message',然後再次在列表理解中(完全忽略字符'i'),然後嘗試將結果列表添加到字符串中?你期望發生什麼?嘗試用簡單'打印更換'input'線下的所有內容([在信息ORD(c)中對C])'(或甚至'打印(*圖(ORD,消息))')。 – jonrsharpe

+0

期望的輸出是以字符串形式輸入的字符的ascii數字嗎? –

回答

0

首先,你並不需要遍歷消息,然後用列表解析過的消息再次重複,堅持一個。

如果預期輸出字符的ASCII碼輸入一個字符串輸入,則你缺少ASCII碼的列表轉換爲字符串,你可以使用string.join功能 -

message = input ("Enter message to be encrypted: ") 

message_numbers1 = [ord(c) for c in message] 
message_numbers = message_numbers + ''.join(map(str, message_numbers1)) 

print (message_numbers) 

請注意,輸入到join功能是串的迭代list_like,因此我使用map轉換的message_numbers1爲字符串。

如果message_numbers1將無法​​在其他地方使用,您也可以直接在它創建的字符串,如下面 -

message_numbers1 = [str(ord(c)) for c in message] 

在這種情況下,你可以直接使用 -

message_numbers = message_numbers + ''.join(message_numbers1) 
+0

何必初始化'message_numbers = 「」'然後有'message_numbers = message_numbers + ...'(不只是因爲'message_numbers + = ...'將簡化的東西)? – jonrsharpe

+0

已經將第二部分關於'str(ord(c))'添加到答案的第二部分 –