我怎样才能将a2c3d转换为accfd?

时间:2018-06-14 18:00:11

标签: python

这里我们只需添加写入前一个字符ascii值的数字。

我试过了

if __name__ == '__main__':
    n = input()
    list1 = list(n)
    for i in list1:
        if list1[i] is not chr:
            list1[i] = list1[i-1] + list1[i]

    print(list(n))

2 个答案:

答案 0 :(得分:1)

这种方法的优点是不使用列表。它将前一个char存储在prev变量中,以便在数字的情况下使用。

text = 'a2c3d'
result = ''
prev = None
for ch in text:
    if ch.isdigit() and prev:
        result += chr(int(ch) + ord(prev))
    else:
        result += ch
        prev = ch
print(result)

答案 1 :(得分:0)

您迭代给定的字符串,如果它是您将其添加到列表中的字符。如果不是,请取出列表中最后一个字符的ord()并添加该号码。你最后坚持到一起:

def change(t):
    rv = [] # accumulates all characters
    for c in t: # iterate all characters in t
        if c.isdigit(): # if a digit
            if not rv:    # and no characters in rv: error
                raise ValueError("Cant have number before character")
            rv.append(chr(ord(rv[-1])+int(c))) # else append the number to the last char
        else:
            rv.append(c) # not a number, simply append

    return ''.join(rv) # join all characters again

print(change("a2c3d")) 

输出:

accfd