假设有一段英文,其中有单词中间的字母i误写为I,请编写程序进行矫正。

题目:假设有一段英文,其中有单词中间的字母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))

欢迎指出错误或改进方案~

  • 14
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值