字符串索引及其越界问题 out of range

在学列表的时候,我们知道了可以通过 索引 来访问列表里的元素,其实字符串也一样有 索引和分片,与列表规则一致。

 

string = 'Hello World'
# 如果都省略,则是复制一个一样的字符串
print(string[:])
# 输出:Hello World

分片索引超出范围会怎么样?会报错吗?例如:
string = 'Hello World'
print(string[0:100000])
分片超出范围是不会报错的。你可以把字符串想象成一根绳子,分片就是用刀将绳子切分开来。在字符串长度内分片相当于在绳子上切割,而超出范围相当于一刀砍到了空气,对于绳子来说没有影响。

但如果取值超出范围则会报错,如:
print(string[1000])

#IndexError: string index out of range

One more example:
利用分片操作,实现一个 trim() 函数,该函数的功能是去除 字符串首尾 的所有空格,字符串中间的空格保留。如:' Hello World ' 处理成 'Hello World'

def trim(s):
while s[:1]==' ':
s=s[1:]
while s[-1:]==' ':

#这里需要注意,如果while s[-1]则会报错,out of range,因为最后一个是空字符。

#因为当字符串为空的时候,s[0]也是越界的,s[-1]也是越界的


s=s[:-1]

return s

print(trim(' Hello World'))
print(trim('Hello World '))
print(trim(' Hello World '))
print(trim(' Hello World '))
print(trim(' '))

 
posted @ 2020-07-05 13:26  MINGZHUQI  阅读(2927)  评论(0编辑  收藏  举报