Python Forum

Full Version: IndexError: list index out of range
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
A common error but i don't know the reason why list index out of range
def runScheme(t_str, n_str, k, q, Field):
    x_subi = [0]
    a_subj = [0]
    pShares = [0]
    pShares_regex = [0]

    t = int(t_str)
    n = int(n_str)

    for i in range(1, n + 1):
        print("ran")
        x = getDistinctX(x_subi, Field)
        x_subi.append(x)

    print("x All the values :", x_subi)

    for j in range(1, t):
        ind = random.randint(0, q)
        a_subj.append(Field[ind])

    print(a_subj)
    #Add or subtract a_i as needed
    print("a_0 value:", a_subj[0], "a_1 value", a_subj[1],"a_2 vlaue:", a_subj[2], "a_3 value:", a_subj[3])
    # print("a_1 value:", a_subj[0], "a_2 value", a_subj[1], "a_3 vlaue:", a_subj[2])


    for i in range(1, n + 1):
        x = x_subi[i]
        print("x_i value :",x)
        polynomialSum = k
        print(k)
        for j in range(1, t):
            a = a_subj[j]
            print("a:", a)
            exponent = math.pow(2, j)
            print("exponent:", exponent)
            polynomialSum += a * exponent
            print("polynomialSum:", polynomialSum)

        regEx = polynomialSum % q
        # print("(%d, %d)" % (x, 19))
        pShares_regex.append(regEx)
        print("all f(x) :", pShares_regex)

        pShares.append(polynomialSum)
Error:
Traceback (most recent call last): File "/home/ali/Downloads/Attribute-Based-Encryption-master/LSSS_t,n.py", line 275, in <module> runPackage([], []) File "/home/ali/Downloads/Attribute-Based-Encryption-master/LSSS_t,n.py", line 259, in runPackage predefinedVars, returnK = initiateScheme(predefinedVars) File "/home/ali/Downloads/Attribute-Based-Encryption-master/LSSS_t,n.py", line 56, in initiateScheme recovered_k = runScheme(t, n, secret_k, q, Field) File "/home/ali/Downloads/Attribute-Based-Encryption-master/LSSS_t,n.py", line 112, in runScheme print("a_0 value:", a_subj[0], "a_1 value", a_subj[1],"a_2 vlaue:", a_subj[2], "a_3 value:", a_subj[3]) IndexError: list index out of range
a_subj starts as a 1-element list. It gets t-1 extra elements as it goes through the for j in range(1, t) loop.

So if t is 3 or less, there will be 3 or less elements in a_subj. Then when you get to the print() statement, the request to print a_subj[3] will fail, since that index doesn't exist.

You are printing out the value of a_subj on line 21. What is the value?
@ bowlofred Yeah I got the error is to correct for j in range(0, t):