为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

有只小跳蛙 2022-11-29 16:00:01
我对 python 比较陌生。作为一个小型项目,我正在创建一个程序,该程序涉及获取一个单词的两个字符串并将每个字符转换为相应的字母值(例如 A = 1、C = 3、Z = 26)。我想找到一种方法来执行此操作,而无需将所有 26 个字母分配给字典中的数字。我在网上找到的每一种算法似乎都不起作用,或者我不明白。我完全不知道该怎么做。如果有人能指出我正确的方向,我将不胜感激。
查看完整描述

4 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

内置string模块提供包含字母表的字符串。您可以使用一行代码从字母到数字进行字典:


import string

letter_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}


查看完整回答
反对 回复 2022-11-29
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

例如...


letter = 'c'

print(ord(letter)-96)


查看完整回答
反对 回复 2022-11-29
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您可以使用内置ord函数返回任何字符的 unicode 代码点(作为整数)。


>>> ord('A')

65

如果你愿意,你可以从中减去一个偏移量。


>>> offset = ord('A') - 1

>>> ord('A') - offset

1

>>> ord('B') - offset

2


查看完整回答
反对 回复 2022-11-29
?
ITMISS

TA贡献1871条经验 获得超8个赞

您可以使用 ascii 码。例如:


num = ord(letter1.lower()) - ord('a') + 1

每个字符都由ascii 码中的一个数字表示。您可以使用 将您的字母转换为 ascii 代码ord,并从中减去字母“a”的 ascii 代码。所有字母在 ascii 表中都是连续的。我补充说.lower(),如果你有大写或小写,你应该将它分成两种情况。完整代码看起来像这样(在变量中给定一个字母letter1:


if letter`.islower():

   num = ord(letter1) - ord('a') + 1

else:

   num = ord(letter1) - ord('A') + 1

(+1 是如果你从 1 而不是 0 开始计数)


查看完整回答
反对 回复 2022-11-29
  • 4 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号