为单词中的字母指定数值

2024-09-19 23:26:53 发布

您现在位置:Python中文网/ 问答频道 /正文

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

第一个步骤是将所选关键字“君士坦丁堡”的字母指定为各自的数字

^{tb1}$

A是1。
C是2,因为虽然它是字母表中的第三个字母,但关键字中没有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', 'n', 't', 'i', 'n', 'o', 'p', 'l', 'e')
[2, 10, 8, 12, 14, 1, None, None, 4, None, None, 11, 5, 3]

这接近于所需的答案

[2,9,6,12,13,1,7,14,4,8,10,11,5,3]

不正确的值用于关键字(o、n、t)中的重复字符。该值似乎是递增的,而不是插入到正确的索引中


Tags: httpsnoneforcount字母数字关键字list
1条回答
网友
1楼 · 发布于 2024-09-19 23:26:53

您可以为此使用enumerate:

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

相关问题 更多 >