Manipulation de fichiers

Signaler
Messages postés
1
Date d'inscription
jeudi 2 janvier 2020
Statut
Membre
Dernière intervention
2 janvier 2020
-
 trifou -
Bonjour,
J'ai écrie un programme pour code un texte avec un décalage caractère
Le programme marche très bien, mais je veux utiliser mes deux fichiers pour les entree et sortie des donnes.
J'aimerais récupérer les deux variables 'alphabet' et 'message' d'un fichier 'entree.txt' et écrire le résultat dans un outre fichier 'sortie.txt'
J'ai déjà essayer avec la commande with ouverture et écrire mais sans succès.


entree.txt
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']
message = [' Test code str //']




mon code python:
**Modifié par la modération pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE
# Coding: utf-8


alphabeth=['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']

##with ('entree.txt','r') as alfabeth, message:


for x in range (len(alphabeth)):
    alphabeth.append(alphabeth[x])
   
message = input('Entrez votre message: ')

message = message.upper()

clef = int(input('Entrez votre clef: '))    

def chiffrage_lettre(lettre,alphabeth,clef):
    for i in range(len(alphabeth)):
        if alphabeth[i]==lettre:
            return str(alphabeth[i+clef])
    return lettre
    
message_chiffre = str()
    
for lettre in message:
        message_chiffre += chiffrage_lettre(lettre,alphabeth,clef)

print (message_chiffre)

##with open('sortie.txt','a') as message_chiffre:
##   message_chiffre.write()





Configuration: Linux / Firefox 71.0

1 réponse

Bonjour,

Le programme marche très bien

J'en doute fort.
Que se passe-t-il si par exemple la lettre est U et la clef 12 ?

Pour ton problème de fichiers, il faut déjà utiliser des chaines sans [ et ].

entree.txt
alphabet=ABCDEFGHIJKLMNOPQRSTUVWXYZ 
message=texte_a_chiffrer


Puis il faut ouvrir ton fichier en lecture, et récupérer les lignes.

# Ouverture en lecture du fichier
width open('entree.txt') as f:
    # Récupération des lignes du fichier (en supprimant les sauts de lignes de fin)
    lignes = f.read().splitlines()
    # Pour chaque ligne
    for ligne in lignes:
        print(ligne)
        # A compléter


En visualisant les lignes affichées, tu verras qu'il faut donc séparer la ligne en 2 par le caractère =, on fait ça avec
str.split
, puis avec de simples conditions, affecter la 2nde valeur à tes variables en fonction de ce que vaut la première.

Tu n'as pas besoin de transformer alphabet en liste, car les chaines sont aussi indexables
'ABCD'[2] # C
.