这里我们只需添加写入前一个字符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))
答案 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