2015-05-14 64 views
0

我正在寫一個程序在python 3將輸入字符串轉換爲整數。代碼只有一個問題。只要有空間,它就會打印-64。我試過編輯一個代碼,但是它打印了64個空格。有什麼建議?打印字符串作爲整數在python 3

n = input("please enter the text:").lower() 

print(n) 
a = [] 
for i in n: 
    a.append(ord(i)-96) 
    if (ord(i)-96) == -64: 
     a.append(" ") 
print(a) 

感謝

Input: "BatMan is Awesome" 
Output: [2, 1, 20, 13, 1, 14, -64, ' ', 9, 19, -64, ' ', 1, 23, 5, 19, 15, 13, 5] 
+2

您能提供一些樣本輸入和您的預期輸出嗎? – CoryKramer

+0

@Cyber​​:完成,添加了一個輸入和輸出 – pythonnewbie

+0

@Cyber​​ *一個代碼,但它打印64與空間* – ZdaR

回答

2

如果我理解你正確地要"abc def"轉換爲[1, 2, 3, " ", 4, 5, 6]。目前,您首先將ord(i) - 96添加到列表中,然後,如果角色是空格,則需要添加額外的空間。如果不是空格,只需要添加ord(i) - 96

n = input("please enter the text:").lower() 

print(n) 
a = [] 
for i in n: 

    if (ord(i)-96) == -64: 
     a.append(" ") 
    else: 
     a.append(ord(i)-96) 
print(a) 
+0

乾杯的人。它工作完美。是的,我犯了一個愚蠢的錯誤,即先添加和調節。謝謝 – pythonnewbie

1

其實你檢查條件if (ord(i)-96) == -64前追加ord(i)-96a,所以正確的做法是,先檢查車況,如果匹配,則追加" "其他簡單的追加ord(i)-96,你可以簡單地做同樣的唯一一個if條件,並通過恢復條件爲忽略其他原因:

n = input("please enter the text:").lower() 

print(n) 
a = [] 
for i in n: 
    if (ord(i)-96) != -64: 
     a.append(ord(i)-96)  
print(a) 
+0

乾杯的人。它工作完美。謝謝 – pythonnewbie

2

您可以檢查是否字符是一個spacestr.isspace()加入ord(i)-96,如果它不是一個空間別的只是廣告d炭:

n = "BatMan is Awesome".lower() 

print([ord(i)-96 if not i.isspace() else i for i in n]) 

[2, 1, 20, 13, 1, 14, ' ', 9, 19, ' ', 1, 23, 5, 19, 15, 13, 5] 

在循環的等效代碼如下:

a = [] 
for i in n: 
    if not i.isspace(): 
     a.append(ord(i)-96) 
    else: 
     a.append(i) 
+1

Doh!我3分鐘太慢了! – LexyStardust

+1

感謝老闆,幫了很大忙。 – pythonnewbie

1

你也可以做到這一點作爲一個(ISH)-liner:

import string 

n = input("please enter the text:").lower() 

a = [ord(c) - 96 if c not in string.whitespace else c for c in n] 
print(a) 

使用string.whitespace list也意味着其他類型的空白將被保留,這可能對你有用?

+0

謝謝老闆!欣賞它。 – pythonnewbie