题目:假设有一段英文,其中有单词中间的字母i误写为I,请编写程序进行矫正。
我的思路:循环切片,利用下标关系进行替换
由于str不能直接进行操作,因此要设置一个list,但list又没有find()方法,所以input()也需要用变量记录
在判定单词中的'I'时我选择使用判断左右字符是否均为空格,但要注意-1和+1可能产生的越界访问问题
若字符串第一个字符为'I',我选择跳过,即start+1;若最后一个字符为'I',我选择在列表最后加一个空字符'\0'。
需要注意切片后find()到的位置是相对于切片而言的,要得到'I'在y中的位置即I_index需要加上切片开始位置即start
x = input()
y = list(x)
start = 0
# 防止下标-1 +1的越界问题
if y[0] != 'I' and y[len(y) - 1] != 'I':
pass
elif y[0] != 'I' and y[len(y) - 1] == 'I':
y.append('\0')
elif y[0] == 'I' and y[len(y) - 1] != 'I':
start += 1
else:
y.append('')
start += 1
while x[start:].find('I') != -1:
I_index = x[start:].find('I') + start
if y[I_index + 1] != ' ' or y[I_index - 1] != ' ':
y[I_index] = 'i'
start = I_index + 1
print(''.join(y))
欢迎指出错误或改进方案~