如何简化大小写英文字母转对应序号的Python实现?
英文字母转对应整数的简洁实现方案
问题背景
输入单个英文字母(覆盖小写a-z、大写A-Z),需输出对应整数规则:
- 小写字母:a→1,b→2……z→26
- 大写字母:A→27,B→28……Z→52
现有如下可行代码,寻求更简洁的实现方式:
c = input() if "a" <= c <= "z": print (ord(c)-ord("a")+1) elif "A" <= c <= "Z": print (ord(c)-ord("A")+27)
几种简洁实现方式
1. 字符串索引定位法
直接将所有符合顺序的字母拼接成字符串,通过索引位置+1得到结果,一行搞定:
print('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.index(input()) + 1)
注:和原代码一样,未处理非字母输入的异常情况,若需要可额外添加判断。
2. 三元表达式简化分支
用islower()替代范围判断,把条件逻辑压缩成一行:
c = input() print(ord(c) - ord('a') + 1 if c.islower() else ord(c) - ord('A') + 27)
逻辑和原代码完全一致,只是写法更紧凑。
3. 统一计算逻辑
利用布尔值转整数的特性,简化大写字母的偏移计算:
c = input() print(ord(c) - ord('a') + 1 + 26 * c.isupper())
原理:c.isupper()返回的布尔值在计算时会自动转成整数,True对应1、False对应0,大写字母直接加26即可从小写对应值跳到大写区间。
内容的提问来源于stack exchange,提问作者dude
相关产品推荐
相关产品推荐

