我正在努力解决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的索引应该超出范围?我试图搜索它但无法得到我的答案。
答案 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)