鱼C论坛

 找回密码
 立即注册
查看: 1777|回复: 3

[已解决]小白问题请教

[复制链接]
发表于 2017-6-14 21:57:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如果一个字符串中有连续的两个空格,请把它删除。比如"How      are you.",在两个单词之间多打了一个空格,
编写代码如下,不知道可不可以实现,运行一直报下面的错误

  1. str1=input("请输入一段话:")
  2. length=len(str1)
  3. for i in range(length-2):
  4.         if str1[i].isspace!=1 and str1[i+1].isspace!=1:
  5.             str1=str1[:i]+str1[i+1:]
  6. print(str1)
复制代码


报错如下
  1. 请输入一段话:how    are you
  2. Traceback (most recent call last):
  3.   File "E:/coder/python/614.py", line 5, in <module>
  4.     if str1[i].isspace!=1 and str1[i+1].isspace!=1:
  5. IndexError: string index out of range
复制代码
最佳答案
2017-6-14 22:17:47
因为在for循环里面,如果第一次遇到两个空格,str1=str1[:i]+str1[i+1:]
因此 len(str1)  因为少了2个空格,长度就少2.
但是range(length-2)  这个是没变的。 他迭代出来的i的值就超过了 len(str1) 因此报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-6-14 22:07:42 From FishC Mobile | 显示全部楼层
用替换不是更简单?把两个空格替换成一个就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-14 22:17:47 | 显示全部楼层    本楼为最佳答案   
因为在for循环里面,如果第一次遇到两个空格,str1=str1[:i]+str1[i+1:]
因此 len(str1)  因为少了2个空格,长度就少2.
但是range(length-2)  这个是没变的。 他迭代出来的i的值就超过了 len(str1) 因此报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-14 22:19:13 | 显示全部楼层
由于length是固定的,当for循环删掉一个空格后,实际长度变成了length - 1,这样最后的[i + 1]就出界了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-10 21:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表