如何解决为单词中的字母分配数值
我是编程新手。我想慢慢写一个程序,根据查普曼的代码对句子进行编码和解码。
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 举报,一经查实,本站将立刻删除。