Encodage

Résolu/Fermé
Chizqiyah - Modifié le 25 oct. 2019 à 15:57
 Chizqiyah - 25 oct. 2019 à 20:50
Bonjour, j'ai toujours un problème au niveau de def encodage_fichier():
Voici tout le code que j'ai fais

ALPHABET = {
    "a": 0,
    "b": 1,
    "c": 2,
    "d": 3,
    "e": 4,
    "f": 5,
    "g": 6,
    "h": 7,
    "i": 8,
    "j": 9,
    "k": 10,
    "l": 11,
    "m": 12,
    "n": 13,
    "o": 14,
    "p": 15,
    "q": 16,
    "r": 17,
    "s": 18,
    "t": 19,
    "u": 20,
    "v": 21,
    "w": 22,
    "x": 23,
    "y": 24,
    "z": 25,
    " ": 26,
    "'": 27
}
ALPHABET_INVERSE = {v: k for k, v in ALPHABET.items()}
LONGUEUR_ALPHABET = len(ALPHABET)


def encodage(phrase, cle):
    encodage = [] # Initialisation
    for i in range(len(phrase)):
            x = (ALPHABET[phrase[i]] + ALPHABET[cle[i % len(cle)]]) % LONGUEUR_ALPHABET
            encodage.append(ALPHABET_INVERSE[x])
    return ("" . join(encodage))
def encodage_fichier():

"""
Procède à l'encodage des paires phrase,cle contenues dans le fichier
encodage_a_faire.txt. Une fois l'encodage fini, tous les messages
encodés sont écrits sur des lignes séparées dans un fichier nommé
encodage_fini.txt.
Dans le fichier encodage_a_faire.txt, chaque ligne représente une paire
phrase,clé, où les deux chaînes de caractères sont séparées par un ','.
J'utilise la fonction split() pour séparer chacune de ces deux
valeurs en lisant une ligne.
Appel à la fonction encodage() pour faire l'encodage d'une phrase
donnée avec sa clé.
Pour gérer l'écriture de toutes les lignes encodées dans le fichier voici ma procédure :
Écrire dans le fichier de sortie au fur et à mesure qu'une phrase est encodée.
Cette approche requiert alors d'ouvrir les deux fichiers (encodage_a_faire.txt et
encodage_fini.txt) en même temps et d'écrire dans ce dernier à chaque fois qu'une
ligne du premier est encodée.
Après l'exécution de cette fonction, le contenu du fichier encodage_fini.txt devrait
être toutes les phrases à encoder du fichier decodage_a_faire.txt, sans leur clé.
"""
#Ouverture des fichiers à lire et à écrire
        # Ouverture du fichier1 et sa lecture
    fichier1 = open("encodage_a_faire.txt", "r")
    fichier2 = open("encodage_fini.txt", "w")
    fichier1.read()
    for l in fichier1:
        fichier1.split(",")
        fichier2.write(encodage(fichier1[0], fichier1[1]))
    # Fermeture des fichiers
    fichier1.close()
    fichier2.close()

3 réponses

Chris 94 Messages postés 50978 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 17 février 2023 7 325
Modifié le 25 oct. 2019 à 16:00
0
Bonsoir.

Les commentaires du code sont à lire.

#Ouverture des fichiers à lire et à écrire
fread = open("encodage_a_faire.txt", "r")
fwrite = open("encodage_fini.txt", "w")
# fichier1.read() => inutile
# Pour chaque ligne du fichier à lire
for line in fread:
    # La ligne à lire c'est l pas fichier1 !
    # str.split retourne plusieurs valeurs qu'on doit récupérer !
    # fichier1.split(",")
    # On supprime les caractères blancs de fin de ligne le "\n"
    line = line.rstrip()
    # On "éclate" la ligne en 2 parties
    string, key = line.split(',')
    # Les arguments à fournir à ta fonction encodage est le résultat du split
    # fichier1[0], fichiers[1] n'a aucun sens !
    # fichier2.write(encodage(fichier1[0], fichier1[1]))
    # On adjoint à la ligne un saut de ligne
    linew = encodage(string, key) + "\n"
    # On écrit la ligne
    fwrite.write(linew)

fread.close()
fwrite.close()
0
Merci pour ton explication. Je comprends mieux avec les commentaires que tu as mis.
Excellente journée à toi
0