如何减少类似的if语句python?

2024-09-30 14:22:59 发布

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

我正在做一个项目,我需要将数值转换成字母字符,目前,我有这个:

if finposb == "2":
    finposb = "a"
if finposb == "3":
    finposb = "b"
if finposb == "4":
    finposb = "c"
if finposb == "5":
    finposb = "d"
if finposb == "6":
    finposb = "e"
if finposb == "7":
    finposb = "f"
if finposb == "8":
    finposb = "g"
if finposb == "9":
    finposb = "h"

我想知道是否有一种方法可以将其缩短为一个较短的代码行,谢谢!在


Tags: 项目方法代码if字母字符数值finposb
3条回答

您不需要任何中间数据结构;请使用finposb的ASCII值(或python3中的Unicode代码点)。在

# ord("a") - ord("2") == 47
finposb = chr(ord(finposb) + 47)

如果您没有这样一个好的、隐式的规则,那么可以使用string.maketrans生成一个转换表,并使用string.translate将该表应用于输入。在

^{pr2}$

如果第一个参数未出现在转换表中,则translate充当标识函数:

>>> string.translate("z", tbl)
'z'
letters='abcdefghijklmnopqrstuvwxyz'
finposb=letters[int(finposb)-2]

这应该行得通,不需要词典。如果您想要更短:

^{pr2}$

使用字典:

DIGIT2LETTER = {
    "2": "a", "3": "b", "4": "c", "5": "d", "6": "e", "7": "f", "8": "g", "9": "h"
}
finposb = DIGIT2LETTER[finposb]

相关问题 更多 >