开发者

How do I stop this program from calling a non-existant list element?

开发者 https://www.devze.com 2023-03-24 22:15 出处:网络
import string ## This part of the code initializes the program by recieving inputs and saving ## them as strings.
import string

## This part of the code initializes the program by recieving inputs and saving
## them as strings.
## It also currently works!

intext = str.lower(raw_input("Please input the text you are going to use. "))
##print intext
i开发者_运维知识库nstring = str.lower(raw_input("Please input your string. "))
##print instring
inlengthminus = int(raw_input("Please input the number of words you would like before the matched word. ONLY PUT AN INTEGER HERE!"))
inlengthplus = int(raw_input("Please input the number of words you would like after the matched word. ONLY PUT AN INTEGER HERE!"))
## This part of the code splits the text into searchable lists.
## It only works when the cases match, which is why the search lists
## convert the text to lowercase.

searchtext=str.split(intext)
##print searchtext
searchstring=list(instring+1)
##print searchstring

## This is the actual search process.
## It works, mostly.

length = len(searchtext)
stringlength = len(searchstring)
##print stringlength

x=0
for a in range(0,length):
    print a
    print searchstring[x]
    print x
    if searchstring[x] in searchtext[a]:
        if (a-inlengthminus)<0:
            print "You almost caused an error, please pick a number of words before your matched word that won't call text that doesn't exist."
            break
        else:
            print searchtext[a-inlengthminus:a+inlengthplus+1]    
            x+=1
    else:
        pass

I don't know how to stop this program from calling a value for searchstring[x] that is greater than the length of searchstring. Is there a way to stop x from causing this overflow error?


Replace

x+=1

With

x = (x + 1) % len(searchstring)

The modulus operator does division and returns the remainder. So x from 0 up to the length of searchstring, the modulus does nothing (returns itself). If x == the length of searchstring, it "resets" to 0, because there is no remainder when dividing.

0

精彩评论

暂无评论...
验证码 换一张
取 消