如何修复Python中的“字符串索引超出范围”错误?

时间:2019-10-10 13:39:52

标签: python

我正在尝试制作一个用特定数字替换字母或字母组的程序,但是该程序返回“ IndexError:超出范围的字符串索引”。是什么原因造成的?

phr = input('Frase: ')
phr=phr.lower()
out = ''
for pos in range(len(phr)):
    frpos=pos+1
    if phr[pos]=='h'and phr[frpos]=='e':
        out+='1'
    if phr[pos]=='h':
        out+='2'
print(out)

2 个答案:

答案 0 :(得分:0)

您在开始时增加了FRPOS,因此在末尾没有最后一个字符的值。

尝试此,它应该工作:

phr = input('Frase: ')
phr=phr.lower()
out = ''
for pos in range(len(phr)):
    frpos=pos
    if phr[pos]=='h'and phr[frpos]=='e':
        out+='1'
    if phr[pos]=='h':
        out+='2'
    pos + 1
print(out)

答案 1 :(得分:0)

考虑案件aaaah

找到“ h”后,您的代码还将检查“ h”之后的位置“ e”。这种情况是导致程序中断的原因。为了解决该问题,一个简单的解决方法是检查“ frpos”是否有效,如下所示:

phr = input('Frase: ')
phr=phr.lower()
out = ''
for pos in range(len(phr)):
    frpos=pos+1
    if phr[pos]=='h'and frpos<len(phr) and phr[frpos]=='e':
        out+='1'
    if phr[pos]=='h':
        out+='2'
print(out)

欢呼