Forum Programmation.python Decoder un message en morse via Python

Posté par . Licence CC by-sa.
Tags :
-3
4
déc.
2018

Bonjour,

Je dois decoder un message ecrit en morse grace a Python. Mon alphabet morse se presente sous la forne d un dictionnaire et mon message secret sous la forme d une liste.

J ai essaye plusieurs combinaisons pour recuperer les valeurs depuis les cles du dictionnaire, mais je seche.

J'ai essaye d imprimer les cles et les valeurs mais ca ne fonctionne pas :
(list(encodedmess.keys())[list(encodedmess.values())]).

Pouvez vous m aider ?
Merci !

MORSE_CODE = { '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':'--..',
'1':'.----',
'2':'..---',
'3':'…--',
'4':'….-',
'5':'…..',
'6':'-….',
'7':'--…',
'8':'---..',
'9':'----.',
'0':'-----',
',':'--..--',
'.':'.-.-.-',
'?':'..--..',
' ':'-..-.',
'-':'-….-',
'[':'-.--.',
']':'-.--.-'}

encodedmess = ['-', '.-.', '-.--', '-..-.', '..-', '…', '.', '-..-.', '-', '….', '..', '…', '-..-.', '.-..', '..', '…', '-', '-..-.', '---', '..-.', '-..-.', '-.', '..-', '--', '-…', '.', '.-.', '…', '-..-.', '..', '-.', '-..-.', '-.--', '.', '…', '-', '.', '.-.', '-..', '.-', '-.--', '…', '-..-.', '.--.', '.-.', '---', '--.', '.-.', '.-', '--', '--..--', '-.--.', '---..', '-----', '--..--', '-..-.', '.----', '.----', '…..', '--..--', '-..-.', '.----', '.----', '…..', '--..--', '-..-.', '.----', '.----', '.----', '--..--', '-..-.', '----.', '..---', '--..--', '-..-.', '.----', '..---', '.----', '--..--', '-..-.', '.----', '.----', '….-', '--..--', '-..-.', '.----', '-----', '….-', '--..--', '-..-.', '.----', '-----', '…..', '--..--', '-..-.', '.----', '.----', '---..', '--..--', '-..-.', '----.', '..---', '--..--', '-..-.', '----.', '----.', '--..--', '-..-.', '.----', '.----', '…..', '--..--', '-..-.', '.----', '..---', '.----', '--..--', '-..-.', '.----', '.----', '---..', '--..--', '-..-.', '----.', '..---', '--..--', '-..-.', '.----', '.----', '----.', '--..--', '-..-.', '.----', '-----', '…--', '--..--', '-..-.', '.----', '.----', '---..', '--..--', '-..-.', '.----', '-----', '…..', '--..--', '-..-.', '.----', '-----', '…..', '--..--', '-..-.', '.----', '.----', '….-', '--..--', '-..-.', '….-', '-….', '--..--', '-..-.', '----.', '..---', '--..--', '-..-.', '--…', '--…', '--..--', '-..-.', '.----', '-----', '-….', '--..--', '-..-.', '----.', '..---', '--..--', '-..-.', '----.', '----.', '--..--', '-..-.', '.----', '.----', '…..', '--..--', '-..-.', '.----', '..---', '.----', '--..--', '-..-.', '----.', '..---', '--..--', '-..-.', '.----', '.----', '----.', '--..--', '-..-.', '.----', '.----', '…..', '--..--', '-..-.', '.----', '.----', '..---', '--..--', '-..-.', '.----', '..---', '..---', '--..--', '-..-.', '.----', '-----', '…..', '--..--', '-..-.', '----.', '..---', '--..--', '-..-.', '.----', '..---', '-----', '--..--', '-..-.', '.----', '-----', '---..', '--..--', '-..-.', '.----', '-----', '----.', '--..--', '-..-.', '.----', '.----', '----.', '--..--', '-..-.', '----.', '..---', '--..--', '-..-.', '.----', '-----', '..---', '--..--', '-..-.', '----.', '----.', '--..--', '-..-.', '----.', '..---', '--..--', '-..-.', '…..', '…..', '--..--', '-..-.', '.----', '.----', '-….', '--..--', '-..-.', '.----', '.----', '…--', '--..--', '-..-.', '----.', '..---', '--..--', '-..-.', '----.', '.----', '--..--', '-..-.', '.----', '-----', '…..', '--..--', '-..-.', '.----', '-----', '….-', '--..--', '-..-.', '.----', '.----', '….-', '--..--', '-..-.', '.----', '-----', '…..', '--..--', '-..-.', '.----', '.----', '----.', '--..--', '-..-.', '.----', '-----', '….-', '--..--', '-..-.', '.----', '-----', '.----', '--..--', '-..-.', '----.', '----.', '--..--', '-..-.', '….-', '---..', '--..--', '-..-.', '----.', '..---', '--..--', '-..-.', '----.', '----.', '--..--', '-..-.', '.----', '.----', '…..', '--..--', '-..-.', '.----', '..---', '.----', '--..--', '-..-.', '----.', '..---', '--..--', '-..-.', '.----', '..---', '…--', '--..--', '-..-.', '.----', '-----', '----.', '--..--', '-..-.', '.----', '.----', '..---', '--..--', '-..-.', '.----', '.----', '..---', '--..--', '-..-.', '----.', '..---', '--..--', '-..-.', '.----', '-----', '--…', '--..--', '-..-.', '.----', '-----', '…..', '--..--', '-..-.', '.----', '..---', '-----', '--..--', '-..-.', '----.', '..---', '--..--', '-..-.', '.----', '..---', '-----', '--..--', '-..-.', '.----', '-----', '---..', '--..--', '-..-.', '.----', '-----', '…..', '--..--', '-..-.', '----.', '..---', '--..--', '-..-.', '.----', '.----', '-….', '--..--', '-..-.', '.----', '.----', '---..', '--..--', '-..-.', '.----', '-----', '----.', '--..--', '-..-.', '.----', '-----', '-----', '--..--', '-..-.', '.----', '-----', '…..', '-.--.-']

  • # Pour commencer

    Posté par (page perso) . Évalué à 3 (+1/-0).

    (on ne vas pas coder l'exercice pour toi…)

    Tu as une liste de codes morse, pour trouver la correspondance il faut que tu aies un mapping code morse → alphabet. Donc il faut le construire à partir du mapping alphabet → code morse que tu as déjà.

    Ensuite, il va falloir que tu appliques la transformation code morse vers alphabet pour chacun des codes de ta liste, ce qui implique une boucle ou une liste en compréhension (qui est une boucle).

    Après, une fois que tu auras la liste des caractères alphabétiques du message, zieute la méthode join() des chaînes.

    Bon exercice.

    Python 3 - Apprendre à programmer en Python avec PyZo et Jupyter Notebook → https://www.dunod.com/sciences-techniques/python-3

    • [^] # Re: Pour commencer

      Posté par . Évalué à 1 (+0/-0).

      Hello et merci pour la reponse. Voici ce que j ai essaye de faire sur vos conseils :

      dico_inv ={}
      for key in MORSE_CODE_DICT:
      item = MORSE_CODE_DICT[key]

      dico_inv[item] = key

      print(dico_inv)

      for key in (encodedmess):
      print(list(encodedmess.keys())[list(encodedmess.values())])

      Ca permet bien de trouver la correspondance, mais la derniere partie ne fait pas la traduction :/

      • [^] # Re: Pour commencer

        Posté par . Évalué à 2 (+0/-0).

        pour poster du code, essaie d'utiliser les balises décrites dans l'aider mémoire en dessous de la boite de rédaction. Pour ton code, la partie de création d'un nouveau dictionnaire m'a l'air correcte

        dico_inv ={}
        for key in MORSE_CODE_DICT:
            item = MORSE_CODE_DICT[key]
            dico_inv[item] = key

        la suite, par contre, ça coince. Regarde ce que donne le code suivant:

        for key in (encodedmess):
            print key

        ce n'est probablement pas ce que tu voulais faire. encodedmess est déjà une liste.

        Et ta ligne de print, je n'ai pas regardé dans le détail, mais le fait que tu n'utilises pas dico_inv que tu viens de créer est un bon indice que c'est probablement pas ça.

  • # Solution

    Posté par . Évalué à 5 (+4/-0).

    Voici la solution (il manque des caractères dans l'alphabet morse proposé)
    ["'", "'", '.-.-.-', '.---', '---', '..', '-.', '(', '-.--.', '-..', '..', '-.-.', '-', '(', '-.--.', '(', '-.-.', '-.--.', '--..', '-.--.-', '--..--', '--..', ')', '-..-.', '..-.', '---', '.-.', '-..-.', '--..', '-..-.', '..', '-.', '-..-.', '--', '---', '.-.', '…', '.', '_', '-.-.', '---', '-..', '.', '-.--.-', ')', '-.--.', '-..-', '-.--.-', '-..-.', '..-.', '---', '.-.', '-..-.', '-..-', '-..-.', '..', '-.', '-..-.', '.', '-.', '-.-.', '---', '-..', '.', '-..', '--', '.', '…', '…', '-.--.-', ')']

    • [^] # Re: Solution

      Posté par . Évalué à 3 (+1/-0).

      list comprehension et dict comprehension, du bon python comme on aime :)

      En dehors des problèmes de majuscules/minuscules, un petit bug quand même, il faut remplacer C[Z] par MORSE_CODE[Z]

    • [^] # Re: Solution

      Posté par . Évalué à 1 (+0/-0).

      Bonjour,
      créer le dictionnaire pour chaque évaluation d'un code Morse, c'est payer un peu cher.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.