|
3鱼币
这一题中第二个注意要点 :用户输入的字符串中,单词之间可能不止一个空格,但是反转后的结果将统一使用一个空格作为单词之间的间隔(例如输入字符串是 "I love FishC.",结果依然输出 "FishC. love I")
我想到先用split()方法将字符串变成一个列表,然后循环语句用remove方法删去空格,最后再翻转输出
代码就是:
a=' i love fishc '
b=a.split(' ')
for i in range(len(b)):
if b[i] == '':
b.remove(b[i])
但是空格删除不干净,于是想加一句 i=0,让每一次删除一个空格后都从头再次遍历一遍,这样应该能彻底删除空格
但是程序报错了
想问一下大家问什么会这样呢。
本帖最后由 临时号 于 2022-7-12 18:01 编辑
还是拿"I love FishC."来举例
因为b=a.split(' '),所以len(b)的结果应该是12
所以range(len(b))它产生的序列其实是(0,1,2,3,4,5,6,7,8,9,10,11)
也就是说i最多可以取到11
但b中有9个'',所以在if语句中都会被删掉,所以b到最后的最大下标根本没有11,但i会取道11,所以报了下标越界
解决的方法是在if中先别直接删掉'',而是记录''的个数,之后再删''
参考代码: a=input()
b=a.split(' ')
count = 0
for i in range(len(b)):
if b[i] == '':
count += 1
while count != 0:
b.remove('')
count -= 1
b.reverse()
for i in range(len(b)):
print(b[i],end=" ")
print()
|
-
最佳答案
查看完整内容
还是拿"I love FishC."来举例
因为b=a.split(' '),所以len(b)的结果应该是12
所以range(len(b))它产生的序列其实是(0,1,2,3,4,5,6,7,8,9,10,11)
也就是说i最多可以取到11
但b中有9个'',所以在if语句中都会被删掉,所以b到最后的最大下标根本没有11,但i会取道11,所以报了下标越界
解决的方法是在if中先别直接删掉'',而是记录''的个数,之后再删''
参考代码:
|