Hejka, na przedmiocie z elementami kryptografii dostałem zadanie napisania programu wykonującego szyfrowanie, deszyfrowanie i atak na szyfr na bazie nieregularnej transpozycji (https://mattomatti.com/pl/a35ad) sęk w tym że nie miałem nigdy do czynienia z pythonem. Mógłby ktoś ocenić, wskazać jak poprawić błędy w poniższym kodzie tak aby działał? Nauczyciel w ogóle nie mógł tego włączyć, mówił że można to zrobić prościej, wskazywał też przyczynę na tę linijke:

table[j] = table[j - 1] + vcode[(j - 1) % len(vcode)]

brak zaindeksowania j, i że łatwiej by było gdybym skorzystał z ciągu znaków zamiast listy. Tylko że pythona na oczy widzę trzeci dzień w porównaniu z pozostałymi osobami na roku które mają oklepany przez ostatnie 2 lata studiów i wiem że nie zdążę nadrobić zanim wykonam zadanie. Dziękuje bardzo za pomoc.

def createKey(key):
    dl=0
    
    values= [dl+1]
    i = 0
    for i in i<dl:
        new.append(i)
        i += 1
        values[i]=2*(key[i]-'0')+1
    values[dl]='\0'
    print(values)
    return values

def encrypt(txt, vcode):
    txt_dl = len(txt)
    dl = 0
    k = 0
    while dl < txt_dl:
        dl+=vcode[ k % len(vcode)]
        k +=1
    table=[i]
    table[0]=0
    for j in j<k:
        j += 1
        table[j] = table[j - 1] + vcode[(j - 1) % len(vcode)]
    wynik=[txt_dl+1]
    max = vcode[0];
    for j in vcode[j]:
        j=1
        j += 1
        if vcode[i] > max:
            max=vcode[j]
    max = (max -1) / 2

    zapis =0
    for j in j >= -max:
        j = max
        j +- 1
        for i in i<k:
            i = 0
            i += 1
            if((vcode[i % len(vcode)] - 1) / 2 >= abs(j)):
                if wynik[zapis+1] == (zapis >= txt_dl):
                    ' '
                else:
                    txt[table[i]]
                table[i]+=1
    wynik[zapis]='\0'
    return wynik

def decrypt(dectxt,decode):
    dectxt_dl=len(dectxt)
    dl=0
    k=0
    while (dl < txt_dl):
        dl += decode[k % len(decode)]
        k+=1
    max =decode[0]
    for i in decode[i]:
        i=1
        i+=1
        if(decode[i] > max):
            max = decode[i]
    table = new[max]
    table[0] = 0
    max = (max - 1) / 2
    for j in j>=- max:
        j= max -1
        j-=1
        table[- j + max] = table[- j + max - 1]
        for i in i<k:
            i=0
            i+=1
            if((decode[i % len(decode)] - 1) / 2 >= abs(j + 1)):
                table[- j + max]+=1
    wynik = [dectxt_dl + 1]
    zapis = 0;
    for  i in i<k:
        i=0
        i+=1
        for j in j < (decode[i % len(decode)] - 1) / 2 + 1:
            j = -(decode[i % len(decode)] - 1) / 2
            j+=1
            wynik[zapis+1] = txt[table[j + max]];
            table[j + max]+1
    wynik[zapis] = '\0';
    #delete[] table;
    return wynik


code=[33]
txt=[257]
vcode= createKey(code)
#print(createKey(code))
print(encrypt(txt,vcode))