微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为单词中的字母分配数值

如何解决为单词中的字母分配数值

我是编程新手。我想慢慢写一个程序,根据查普曼的代码对句子进行编码和解码。
https://1drv.ms/u/s!Ah-IzfOzjlZ_ungI4M_yjxY9_kig?e=e6Qzir
https://1drv.ms/u/s!Ah-IzfOzjlZ_unnDyEXct45dwu60?e=0oK49w

第一部分是为所选关键字“CONSTANTInopLE”的字母分配各自的数字。

C O N S T A N T N O P L E
2 9 6 12 13 1 7 14 4 8 10 11 5 3

A 是 1。
C 是 2,因为虽然它是字母表的第 3 个字母,但关键字中没有 B。

到目前为止,我已经能够为这些字母分配正确的数字,但是,如果关键字中的该字母超过 1 个,则打印出来会使它们不正确。

word = 'constantinople'
alphabet = 'abcdefghijklmnopqrstuvwxyz'

count = 1
list = [None] * len(word)

for letter in alphabet:
    for char in word:        
        if letter is char:
            list[(word.index(char))] = (count+1)
            count += 1       

print(tuple(word))
print(list)

结果:


('c','o','n','s','t','a','i','p','l','e')
[2,10,8,12,14,1,None,4,11,5,3]

这与

的期望答案很接近

[2,9,6,13,7,3]

不正确的值是关键字中的重复字符 (o,n,t)。与其将它们插入到正确的索引中,不如说是增加了值。

解决方法

您可以为此使用枚举:

m=[i for i in enumerate(sorted(listword),1)]

for k in m:
    print(k[1],' equals ',k[0])

输出:

a  equals  1
c  equals  2
e  equals  3
i  equals  4
l  equals  5
n  equals  6
n  equals  7
n  equals  8
o  equals  9
o  equals  10
p  equals  11
s  equals  12
t  equals  13
t  equals  14

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。