0

我正在用python编写一个程序,计算一个字符串的当量并打印它。(通过数字等价物,我的意思是 a=1 b=2 ...所以字母表中的第七个字母被转换为数字 7。)所以如果这个词是abc那么它会变成 123。如果可能的话,添加数字(在我的示例中为123)。(所以在我的示例中,打印的结果将是 6。)我尝试使用ord()函数逐个字母地执行此操作。但这最终成为您键入每个字母并按 Enter 键,然后为空字母添加空格的位置。该代码旨在计算单词中每个字母的数字值,将所有值相加,如果数字是 100,则告诉 True,如果是其他数字,则告诉 True。这是……`

#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, ')'`

我不知道该怎么做。所以,一个解释会很好,一个完整的代码重写会很有趣,但不是必需的。

-亚当

PS如果有什么我忘了补充这个问题,请告诉我。

4

3 回答 3

1

假设一切都是小写的,输入只是 az

sum((ord(c) - ord('a') + 1 for c in s))
于 2013-09-24T02:37:56.687 回答
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一个生成器表达式,它在 中查找i每个字符aword,从而对所有字符值求和。

于 2013-09-24T02:38:27.197 回答
0
>>> aword="iabcdefghijklm"
>>> value=sum(map(ord,aword),(1-ord("a"))*len(aword))
>>> print value==100, value
True 100
>>> 
于 2013-09-24T03:32:49.040 回答