2011-10-05 63 views
5

編寫一個Python程序,它會要求用戶輸入一串小寫字符,然後打印出相應的二維字符,數字代碼。例如,如果輸入是「home」,則輸出應該是「08151305」。如果數字小於10(在python中),則在數字前面放置一個0

目前我有我的代碼工作,使所有的號碼列表,但我不能 得到它在單個數字前加0。

def word(): 
    output = [] 
    input = raw_input("please enter a string of lowercase characters: ") 
    for character in input: 
     number = ord(character) - 96 
     output.append(number) 
    print output 

這是輸出我得到:

word() 
please enter a string of lowercase characters: abcdefghijklmnopqrstuvwxyz 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] 

我想我可能需要在列表中更改爲一個字符串或整數這樣做,但 我不知道該怎麼做。

+0

改變從''list'到output'了'string'將是明智的。這與使用'「」'而不是'[]'初始化並使用'+ ='而不是'.append()'一樣簡單。 – Johnsyweb

回答

4
output = ["%02d" % n for n in output] 
print output 
['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26'] 

Python有一個字符串格式化操作[docs]這很像在C和其他語言sprintf。你給你的數據以及一個代表你想要的數據格式的字符串。在我們的例子中,格式字符串("%02d")僅表示一個整數(%d),該整數爲0,最多填充兩個字符(02)。

如果你只是想顯示的數字,沒有別的,你可以使用字符串.join()[docs]方法來創建一個簡單的字符串:

print " ".join(output) 
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 
10

或者使用內置功能設計爲做到這一點 - zfill()

def word(): 
    # could just use a str, no need for a list: 
    output = "" 
    input = raw_input("please enter a string of lowercase characters: ").strip() 
    for character in input: 
        number = ord(character) - 96 
     # and just append the character code to the output string: 
        output += str(number).zfill(2) 
    # print output 
    return output 


print word() 
please enter a string of lowercase characters: home 
08151305 
+0

+1提到zfill方法 – Jetse

4

請注意,根據Python標準庫文檔2.7,在使用%格式化操作的Python 3發佈之後, Here's the docs on string methods;看看str.format

「新辦法」 是:

output.append("{:02}".format(number)) 
+1

對於轉換單個對象,直接調用格式更簡單:'','.join(format(ord(c) - 96,'02')for c in input)''。 – eryksun

+0

upvote for str.format for this problem。 –

相關問題