方法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
- 思想:使用正则表达式进行匹配,然后加* 2.总结:2.1 \d 表示数字,\d+表示尽可能多的数字, 2.2 addstar 用于将匹配项改造的函数