猿问

如何将字母转换为相应的数值?

我对 python 比较陌生。作为一个小型项目,我正在创建一个程序,该程序涉及获取一个单词的两个字符串并将每个字符转换为相应的字母值(例如 A = 1、C = 3、Z = 26)。我想找到一种方法来执行此操作,而无需将所有 26 个字母分配给字典中的数字。我在网上找到的每一种算法似乎都不起作用,或者我不明白。

我完全不知道该怎么做。如果有人能指出我正确的方向,我将不胜感激。


有只小跳蛙
浏览 265回答 4
4回答

蛊毒传说

内置string模块提供包含字母表的字符串。您可以使用一行代码从字母到数字进行字典:import stringletter_to_number = {l:n+1 for (l,n) in zip(string.ascii_uppercase, range(len(string.ascii_uppercase)))}# {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8, 'I': 9, 'J': 10, 'K': 11, 'L': 12, 'M': 13, 'N': 14, 'O': 15, 'P': 16, 'Q': 17, 'R': 18, 'S': 19, 'T': 20, 'U': 21, 'V': 22, 'W': 23, 'X': 24, 'Y': 25, 'Z': 26}

素胚勾勒不出你

例如...letter = 'c'print(ord(letter)-96)

慕桂英3389331

您可以使用内置ord函数返回任何字符的 unicode 代码点(作为整数)。>>> ord('A')65如果你愿意,你可以从中减去一个偏移量。>>> offset = ord('A') - 1>>> ord('A') - offset1>>> ord('B') - offset2

ITMISS

您可以使用 ascii 码。例如:num = ord(letter1.lower()) - ord('a') + 1每个字符都由ascii 码中的一个数字表示。您可以使用 将您的字母转换为 ascii 代码ord,并从中减去字母“a”的 ascii 代码。所有字母在 ascii 表中都是连续的。我补充说.lower(),如果你有大写或小写,你应该将它分成两种情况。完整代码看起来像这样(在变量中给定一个字母letter1:if letter`.islower():   num = ord(letter1) - ord('a') + 1else:   num = ord(letter1) - ord('A') + 1(+1 是如果你从 1 而不是 0 开始计数)
随时随地看视频慕课网APP

相关分类

Python
我要回答