繁体   English   中英

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

[英]String Index Out of Range when comparing characters

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

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等于字符串的长度s letter+1比长度高一,所以索引不存在。

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

解决方案:

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

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

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

我认为只有在前一封信小于当前一封信时,您才想打印一封信。 索引越界是因为最后一个索引指向 (l) 但 index + 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM