方法1 直接法

while True:
    try:
        string = input()
        newstring = ''
        for i in range(1,len(string)+1):
            try:
                if(i==1 and string[i-1].isdigit()):
                    newstring += '*'
                newstring += string[i-1]
                if(i == len(string) and string[i-1].isdigit()):
                    newstring +='*'
                if ((string[i-1].isdigit()==False) and (string[i].isdigit())):
                    newstring += '*'
                if (string[i-1].isdigit()and (string[i].isdigit()==False)):
                    newstring +='*'
            except:
                pass
        print(newstring)
    except:
        break

1.思想:

1.1对比前一个不是数字的情况下后一个是否是数字,若为TRUE则加*

1.2前一个是数字的情况下后一个是否不是数字,若为true则加*

1.3 如果最后一个是数字,则加*

2.特例:

2.1 空:返回空, 2.2 纯数字则在头加* 2.3 无数字直接返回

3.总结:可以用try,except来解决数组越界的问题

方法2 正则表达式法

import re
def addstar(match):
    num = match.group(0)
    subnum = f'*{num}*'
    return subnum
while 1:
    try:
        print(re.sub('(\d+)', addstar, input()))
    except:
        break
  1. 思想:使用正则表达式进行匹配,然后加* 2.总结:2.1 \d 表示数字,\d+表示尽可能多的数字, 2.2 addstar 用于将匹配项改造的函数