题目:假设有一段英文,其中有单词中间的字母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':passelif y[0] != 'I' and y[len(y) - 1] == 'I':y.append('\0')elif y[0] == 'I' and y[len(y) - 1] != 'I':start += 1else:y.append('')start += 1while x[start:].find('I') != -1:I_index = x[start:].find('I') + startif y[I_index + 1] != ' ' or y[I_index - 1] != ' ':y[I_index] = 'i'start = I_index + 1print(''.join(y))
欢迎指出错误或改进方案~