Coded Correspondence code review

Hello!
Just finished the most difficult off-platform project in Data Scientist career path. It took a lot of time and effort, but the emotional reward is outstanding.
I would love to get your feedback and constructive critics :slight_smile:

alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
def decypher_caesar(message, offset):
    dec_message = []
    for i in range(len(message)):
        if message[i] not in alphabet:
                dec_message.append(message[i])
        else:
            for j in range(len(alphabet)):
                if alphabet[j] == message[i]:
                    if (offset + j) < len(alphabet):
                        dec_message.append(alphabet[j+offset])
                    elif (offset + j) >= len(alphabet):
                        dec_message.append(alphabet[j+offset-len(alphabet)])
    return ''.join(dec_message)
message_1 = "xuo jxuhu! jxyi yi qd unqcfbu ev q squiqh syfxuh. muhu oek qrbu je tusetu yj? y xefu ie! iudt cu q cuiiqwu rqsa myjx jxu iqcu evviuj!"
print(decypher_caesar(message_1, 10))

def cypher_message(message, offset):
    c_message = []
    for i in range(len(message)):
        if message[i] not in alphabet:
                c_message.append(message[i])
        else:
            for j in range(len(alphabet)):
                if alphabet[j] == message[i]:
                    if (offset - j) < len(alphabet):
                        c_message.append(alphabet[j-offset])
                    elif (offset - j) >= len(alphabet):
                        c_message.append(alphabet[j-offset+len(alphabet)])
    return ''.join(c_message)
my_message = "hey there! this is an example of a caesar cipher. were you able to decode it? i hope so! send me a message back with the same offset!"
print(cypher_message(my_message, 10))

message_2 = "jxu evviuj veh jxu iusedt cuiiqwu yi vekhjuud."
print(decypher_caesar(message_2, 10))
message_3 = "bqdradyuzs ygxfubxq omqemd oubtqde fa oapq kagd yqeemsqe ue qhqz yadq eqogdq!"
print(decypher_caesar(message_3, 14))
message_4 = "vhfinmxkl atox kxgwxkxw tee hy maxlx hew vbiaxkl tl hulhexmx. px'ee atox mh kxteer lmxi ni hnk ztfx by px ptgm mh dxxi hnk fxlltzxl ltyx."
print(decypher_caesar(message_4, 7))

test = "dfc aruw fsti gr vjtwhr wznj? vmph otis! cbx swv jipreneo uhllj kpi rahjib eg fjdkwkedhmp!"
def decrypt_vigŠµnere(message, keyword):
    result = []
    #Step 1: Filling keyword list
    keyword_string = []
    kw_counter = 0
    for i in range(len(message)):
        if message[i] not in alphabet:
            keyword_string.append(message[i])
            kw_counter += 1
        else:
            keyword_string.append(keyword[(i-kw_counter) - ((i-kw_counter)//len(keyword)*len(keyword))])
    #Step 2: Filling result list
    for i in range(len(message)):
        if message[i] not in alphabet:
                result.append(message[i])
        else:
            for j in range(len(alphabet)):
                #finding keyword_string element's index in alphabet
                for k in range(len(alphabet)):
                    if alphabet[k] == keyword_string[i]:
                        offset = k
                if alphabet[j] == message[i]:
                    if (offset - j) < len(alphabet):
                        result.append(alphabet[j-offset])
                    elif (offset - j) >= len(alphabet):
                        result.append(alphabet[j-offset+len(alphabet)])
    #Step 3: Joining result list into string
    return ''.join(result)
        
print(decrypt_vigŠµnere(test, "friends"))

test_vigenere_crypt = "hello, friend, i've spent a bunch of time and nerves to solve this puzzle, but, thanks to you, i've reached my goal and improved my python skills!"
def crypt_vigŠµnere(message, keyword):
    result = []
    #Step 1: Filling keyword list
    keyword_string = []
    kw_counter = 0
    for i in range(len(message)):
        if message[i] not in alphabet:
            keyword_string.append(message[i])
            kw_counter += 1
        else:
            keyword_string.append(keyword[(i-kw_counter) - ((i-kw_counter)//len(keyword)*len(keyword))])
    #Step 2: Filling result list
    for i in range(len(message)):
        if message[i] not in alphabet:
                result.append(message[i])
        else:
            for j in range(len(alphabet)):
                #finding keyword_string element's index in alphabet
                for k in range(len(alphabet)):
                    if alphabet[k] == keyword_string[i]:
                        offset = k
                if alphabet[j] == message[i]:
                    if (offset + j) < len(alphabet):
                        result.append(alphabet[j+offset])
                    elif (offset + j) >= len(alphabet):
                        result.append(alphabet[j+offset-len(alphabet)])
    #Step 3: Joining result list into string
    return ''.join(result)
        
crypted = crypt_vigŠµnere(test_vigenere_crypt, "friends")
print(crypted)
print(decrypt_vigŠµnere(crypted, "friends"))