我想得到任何号码。eg: 14892. 并将其返回为 25903 (根据每个字符的 unicode 值)
这是我到目前为止所拥有的:
def convert(n):
if len(n)>0:
x = (chr(ord(str((int(n[0])+1)))))
return x
要执行此转换,您需要获取每个数字并向其添加一个,将 10 环绕为 0。进行该环绕的简单方法是使用模运算符。我们还可以使用整数除法和取模来提取数字,并且我们可以使用内置divmod
函数进行这两种操作。我们将修改后的数字存储在一个列表中,因为将数字组合回单个数字的简单方法需要以相反的顺序排列数字。
def convert(n):
a = []
while n:
n, r = divmod(n, 10)
a.append((r + 1) % 10)
n = 0
for u in reversed(a):
n = 10 * n + u
return n
# Test
print(convert(14892))
输出
25903
该算法非常接近在传统语言中进行这种转换的常用方法。然而,在 Python 中,使用字符串来做这种事情实际上更快,因为str
和int
构造函数可以以 C 的速度完成大部分工作。生成的代码有点神秘,但更紧凑。
def convert(n):
return int(''.join([str((int(c) + 1) % 10) for c in str(n)]))
您可以将数字转换为字符串,使用 translate 函数换出数字,然后再次转换回整数:
>>> t=str.maketrans('1234567890','2345678901')
>>> x = 14892
>>> y = int(str(x).translate(t))
>>> y
25903
def convert(n):
return int(''.join([str(int(elem)+1)[-1] for elem in str(n)]))
您可以使用列表理解。