-6

我想得到任何号码。eg: 14892. 并将其返回为 25903 (根据每个字符的 unicode 值)

这是我到目前为止所拥有的:

def convert(n):
    if len(n)>0:
        x = (chr(ord(str((int(n[0])+1)))))
        return x
4

3 回答 3

0

要执行此转换,您需要获取每个数字并向其添加一个,将 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 中,使用字符串来做这种事情实际上更快,因为strint构造函数可以以 C 的速度完成大部分工作。生成的代码有点神秘,但更紧凑。

def convert(n):
    return int(''.join([str((int(c) + 1) % 10) for c in str(n)]))
于 2017-10-01T17:00:53.153 回答
0

您可以将数字转换为字符串,使用 translate 函数换出数字,然后再次转换回整数:

>>> t=str.maketrans('1234567890','2345678901')
>>> x = 14892
>>> y = int(str(x).translate(t))
>>> y
25903
于 2017-10-01T18:40:41.573 回答
0
def convert(n):
    return int(''.join([str(int(elem)+1)[-1] for elem in str(n)]))

您可以使用列表理解。

于 2017-10-01T16:41:47.910 回答