2013-09-24 80 views
0

我正在用python編寫一個程序,它計算一個字符串的等效數字並打印出來。 (通過等價數字,我的意思是a = 1 b = 2 ...因此字母表中的第七個字母被轉換爲數字7.)因此,如果單詞是abc那麼它將變成123.而且,如果可能的,數字(在我的例子中)被添加。 (所以在我的例子中,打印的結果是6.)我嘗試使用函數ord()函數來逐字寫這個字母。但最終會出現在你鍵入每個字母的地方,然後按回車鍵,然後爲空字母添加空格。該代碼旨在計算單詞中每個字母的數字值,添加所有值,並在數字爲100時指示True,如果數字爲100則爲false。這是...'在python中將字符串更改爲數字值。 [ord()]

#collect info 
ar=raw_input('Letter') 
br=raw_input('Letter') 
cr=raw_input('Letter') 
dr=raw_input('Letter') 
er=raw_input('Letter') 
fr=raw_input('Letter') 
gr=raw_input('Letter') 
hr=raw_input('Letter') 
ir=raw_input('Letter') 
jr=raw_input('Letter') 
kr=raw_input('Letter') 
lr=raw_input('Letter') 
mr=raw_input('Letter') 
nr=raw_input('Letter') 
#ord it 
ap=ord(ar) 
bp=ord(br) 
cp=ord(cr) 
dp=ord(dr) 
ep=ord(er) 
fp=ord(fr) 
gp=ord(gr) 
hp=ord(hr) 
ip=ord(ir) 
jp=ord(jr) 
kp=ord(kr) 
lp=ord(lr) 
mp=ord(mr) 
np=ord(nr) 
#sub 96 
a=(ap-96) 
b=(bp-96) 
c=(cp-96) 
d=(dp-96) 
e=(ep-96) 
f=(fp-96) 
g=(gp-96) 
h=(hp-96) 
i=(ip-96) 
j=(jp-96) 
k=(kp-96) 
l=(lp-96) 
m=(mp-96) 
n=(np-96) 
#chk for 96 
if a==-64: 
    a=0 
if b==-64: 
    b=0 
if c==-64: 
    c=0 
if d==-64: 
    d=0 
if e==-64: 
    e=0 
if f==-64: 
    f=0 
if g==-64: 
    g=0 
if h==-64: 
    h=0 
if i==-64: 
    i=0 
if j==-64: 
    j=0 
if k==-64: 
    k=0 
if l==-64: 
    l=0 
if m==-64: 
    m=0 
if n==-64: 
    n=0 

#add 
value=a+b+c+d+e+f+g+h+i+j+k+l+m+n 

#spit 
if value==100: 
    print 'True (100)' 
if value<100 or value>100: 
    print 'False (', value, ')'` 

我想不出如何做到這一點。所以,一個解釋是很好的,一個完整的代碼重寫將享受,但不是必需的。

-Adam

P.S.如果有什麼我忘記添加到這個問題,請告訴我。

回答

0
>>> aword="iabcdefghijklm" 
>>> value=sum(map(ord,aword),(1-ord("a"))*len(aword)) 
>>> print value==100, value 
True 100 
>>> 
1

假設一切是小寫和輸入只有A-Z

sum((ord(c) - ord('a') + 1 for c in s)) 
1
>>> from string import lowercase,uppercase 
>>> alphabet = lowercase+uppercase 
>>> mapper = {c:i for i,c in enumerate(alphabet,start=1)} 
>>> aword = "Letter" 
>>> sum(mapper[l] for l in aword) 
106 

創建其中字符c映射到它是在字母表i位置的字典。然後我們通過sum一個生成器表達式,它爲aword中的每個字符查找i,導致所有字符值相加。

+0

這處理不同的大寫和小寫數字。我只是使用'小寫',並在列表理解上使用'aword.lower()'... – kindall

相關問題