比较字符时字符串索引超出范围



我只是试图将字符串中的一个字符与其相邻字符进行比较,但我一直得到一个字符串索引超出范围的错误。我想不通。

s = 'azcbobobegghakl'
current = ""
previous = ""
for letter in range(0,len(s)):
if s[letter] <= s[letter+1]:
current += s[letter]
print(current)

感谢

if语句是不必要的。在循环的最后一次迭代中,s[letter+1]抛出了一个错误,因为该字符串的索引不存在。此时,letter等于字符串的长度sletter+1比长度高一个,因此不存在索引。

不需要在if语句中将letter的值与s的长度进行比较,因为循环将在letter大于s的长度之前结束。

解决方案:

s = 'azcbobobegghakl'
current = ""
previous = ""
for letter in range(0,len(s)):
current += s[letter]
print(current)

虽然@sedavidw完全正确地指出了索引问题,但这并不是一种非常愚蠢的比较方式。我会做一些类似的事情:

current = ''.join(letter for letter, next_letter in zip(s, s[1:]) 
if letter <= next_letter)

我认为只有当前一个字母小于当前字母时,才需要打印一个字母。发生索引越界是因为最后一个索引指向(l(,但索引+1指向零。

这是我的解决方案:

s = 'azcbobobegghakl' 
current = "" 
previous = "" 
for letter in range(0,len(s)): 
if letter + 1 < len(s): # this is important to prevent the index out of bounds error
if s[letter] <= s[letter+1]: 
current += s[letter] 
print(current)
Output: abbbeggak

最新更新