def chiffrement(mode, cle, texte):      # chiffrement de Vigenère

    K = []                 # traduction de la clÃ© en une liste de nombres compris entre 0 et 25
    for c in cle:
        k = ord(c) - 65    
        if mode == "D":
        	k *= -1        # si le mode choisi est "déchiffrer", effectuer une soustraction plutôt qu'une addition
        K += [k]
    if mode == "E":
        print("Version numérique:",K)
        
    nouveau_texte = ""
    n = 0
    for lettre in texte:
        nouvelle_lettre = lettre
        
        if 65 <= ord(lettre) <= 90:    # si la lettre est une majuscule, transformer celle-ci

            k = K[n]                  	 # calcul de la valeur de la clé numérique en position n
            n = (n+1) % len(cle)        # incrémentation de la valeur de n (avec remise à 0 si nécessaire)

            l = ord(lettre) - 65
            nl = (l + k) % 26
            nouvelle_lettre = chr(nl + 65)
        
        nouveau_texte += nouvelle_lettre
    return(nouveau_texte)


texte = input("Texte d'origine:")
cle = input("Clé:")

texte_chiffre = chiffrement("C",cle,texte)
print("Texte chiffré:",texte_chiffre)

texte_dechiffre = chiffrement("D",cle,texte_chiffre)
print("Texte déchiffré:",texte_dechiffre)