每隔一个数字加 1

Sta*_*end 2 python

如何每隔一个数字加 1?
例子:

2323 -> 2424
1112 -> 1213
3912 -> 31013
Run Code Online (Sandbox Code Playgroud)

这就是我现在所拥有的:

def plus_to_every_second(integer):
    integer = str(integer)
    integer_new = ''
    for i in integer:
        if integer.find(i) % 2 != 0:
            integer_new += str(int(i) + 1)
        else:
            integer_new += i

    return integer_new
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它不起作用。但实际的解决方案是什么?

moz*_*way 5

不要使用find,它只查找第一次出现,而是使用 迭代数字和位置enumerate

IIUC,你可以这样做:

def add1(n):
    return int(''.join(str(int(d)+i%2) for i,d in enumerate(str(n))))

add1(2323)
# 2424

add1(1112)
# 1213

add1(3912)
# 31013
Run Code Online (Sandbox Code Playgroud)
使用经典循环
def add1(n):
    s = str(n)
    out = ''
    for i,d in enumerate(s):
        out += str(int(d)+i%2)
    return int(out)
Run Code Online (Sandbox Code Playgroud)

  • @Stamend 当然,但知道理解更Pythonic 和更高效。你应该尝试理解它;) (5认同)