如何在Python中调试“IndexError:字符串索引超出范围”?

时间:2016-09-10 18:47:15

标签: python python-3.x

我正在努力解决Ex。 9.6思考Python 3。

  

问题:编写一个名为is_abecedarian的函数,如果单词中的字母按字母顺序出现(双字母正常),则返回True。有多少初学者的话?

我写的:

fin= open('words.txt')
for line in fin: 
line=fin.readline()
word=line.strip()
c=0
index=0
for letter in word:
    if ord(letter)<ord(word[index+1]):
        c=c+1
        index=index+1
if c==len(word):
    print(word)

我的方法是将字母转换为数字值,并通过每次循环结束时将索引增加1并将其与每个字母的下一个字母进行匹配。如果count等于单词的长度,则意味着前一个字母的值始终小于下一个字母。所以打印这个词。

错误:

Traceback (most recent call last): File "C:\Users\KARAN\Desktop\Python\Programs\practice.py", line 8, in <module> if ord(letter)<ord(word[index+1]): IndexError: string index out of range

我得到'IndexError',但我不认为0 + 1 = 1的索引应该超出范围?我试图搜索它但无法得到我的答案。

1 个答案:

答案 0 :(得分:1)

(代表OP发布)

最终解决方案:

fin= open('words.txt')
for line in fin: 
    line=fin.readline()
    word=line.strip()
    c=0
    index=0
    while index!=(len(word)-1):
        i=(word[index])
        j=(word[index+1])
        index=index+1
        if ord(j)>=ord(i):
            c=c+1
    if c==(len(word)-1):
        print(word)