Creer pros python leet speak sans replace et dictio

samoskvamos -  
 PierrotLeFou -

Bonjour a tous je n'ai pas bien compris cette exercice, voici l'intitulé

Le principe est d’utiliser des caractères graphiquement voisins des caractères usuels. On écrit « 5 » au lieu de « S », « 7
» au lieu de « T », « 4 » au lieu de « A », « 3 » au lieu de « E », « 1 » au lieu de « L » et « 0 » au lieu de « O ».
Ainsi le mot "nuage", s’écrira "nu4g3". Les mots "cette lettre" s’écriront "c3773 1377r3"
Ce système d’écriture se retrouve chez certains passionnés d’informatique, utilisateurs de jeux en réseau. Il est présent en
particulier sur les forums de discussion en ligne.
Vous devez créer un programme qui permet de traduire une phrase quelconque du français vers le langage Leet.
Attention, il existe plusieurs versions du langage leet, je vous demande d’utiliser la version simple que je vous présente
ici, dans laquelle on ne modifie que les caractères S, T, A, E, L et O.
L’utilisation de la méthode replace est interdite ici. L’utilisation des listes ou des dictionnaires est aussi interdite. Je vous
demande de créer une nouvelle chaine de caractère, vide au départ, dans laquelle vous ajouterez les caractères au fur et à
mesure de la traduction.


Windows / Chrome 107.0.0.0

11 réponses

  1. jee pee Messages postés 31908 Date d'inscription   Statut Modérateur Dernière intervention   9 985
     

    Bonjour,

    Pas de liste, de dictionnaire et de replace. Donc on va utiliser des chaines de caractères, différentes boucles et la position des caractères dans la chaine.

    def leet(chaine):
       orig="STAELO"
       code="574310"
       chcod=""
       for i in range
          for j in range
    
           ...
    
       return chcod
    
    print(leet("nuage"))
    print(leet("cette lettre"))
                 
    

    1
    1. samoskvamos Messages postés 9 Statut Membre
       

      re bonjour merci de ta pris de temps mais j'ai une question, quand je lance le programme cela me met

      File "C:\Users\Cooler Master\Desktop\tp nsi\Test leetspeak.py", line 5

      for i in range

      ^

      SyntaxError: invalid syntax

      et je voudrais savoir comment régler.

      0
      1. jee pee Messages postés 31908 Date d'inscription   Statut Modérateur Dernière intervention   9 985 > samoskvamos Messages postés 9 Statut Membre
         

        c'était un début de code, il faut que tu complètes

        0
      2. jee pee Messages postés 31908 Date d'inscription   Statut Modérateur Dernière intervention   9 985 > jee pee Messages postés 31908 Date d'inscription   Statut Modérateur Dernière intervention  
         

        une boucle sur la longueur de chaine, on traite le caractère chaine[i] une boucle sur la longueur orig on compare chaine[i] à orig[j]

        0
  2. PierrotLeFou
     

    Je suppose qu'on n'a pas droit aux tuple ni à index pour mal faire ...
    Indice: la boucle intérieure sert à trouver la position du caractère à enccoder.
    Sais-tu comment trouver rapidement si un caractère est dans une chaîne?

    0
    1. samoskvamos Messages postés 9 Statut Membre
       

      Bonsoir Pierrot, j'ai lis ta réponse et nan je sais pas comment faire.

      j'ai donc essayer un autre code que j'ai fait; peut tu me dire ou est-ce que j'ai fait des erreur, sur le code on me met cela

      File "C:\Users\Cooler Master\Desktop\tp nsi\test leetspeak2.py", line 28

      return Trad

      ^

      IndentationError: unindent does not match any outer indentation level

      le code est en bas

      trad=''
      
      A=input('Taper Votre Phrase Pour La Traduire En Language Leet ')
      
      
      for k in A :
          if k=='S' or k=='s':
              Trad+='S'
      
          elif k=='T' or k=='t':
              Trad+='7'
      
          elif k=='A' or k=='a':
              Trad+='4'
      
          elif k=='E' or k=='e':
              Trad+='3'
      
          elif k=='L' or k=="l":
              Trad+='1'
      
          elif k=='O' or k=='o':
              Trad+='0'
      
          else:
              Trad+=k
      
         return Trad
      
      0
      1. jee pee Messages postés 31908 Date d'inscription   Statut Modérateur Dernière intervention   9 985 > samoskvamos Messages postés 9 Statut Membre
         

        oui c'est aussi une possibilité. Mais on attend d'un programmeur une solution un peu plus sophistiquée ;-)

        Formellement ta solution comporte des erreurs :

        • trad='', non Trad=''
        • Trad+='S' non Trad+='5'
        •  return s'utilise quand on a une fonction, initialisée par def fonction().

        Enfin on peut simplifier les tests :

        if k.upper()=='S':
        0
  3. PierrotLeFou
     

    Dans ton second code, je ne vois pas la ligne def ...
    Où est la fonction?
    Si tu n'as pas de fonction, tu n'as pas besoin de return.
    Sinon, l'erreur veut dire que le return ne commence pas dans la bonne colonne.

    Pour le "S", tu ne convertis pas en "5"

    Tu as utilisé print au début ...

    0
  4. samoskvamos Messages postés 9 Statut Membre
     

    du coup re bonsoir il manque un dernière chose, quand je le lance cela me met 'Taper Votre Phrase Pour La Traduire En Language Leet'

    trad=''
    
    A=input('Taper Votre Phrase Pour La Traduire En Language Leet')
    
    
    for k in A :
        if k=='S' or k=='s':
            trad+='5'
    
        elif k=='T' or k=='t':
            trad+='7'
    
        elif k=='A' or k=='a':
            trad+='4'
    
        elif k=='E' or k=='e':
            trad+='3'
    
        elif k=='L' or k=='l':
            trad+='1'
    
        elif k=='O' or k=='o':
            trad+='0'
    
        else:
            trad+=k
    
    print('A')
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jee pee Messages postés 31908 Date d'inscription   Statut Modérateur Dernière intervention   9 985
     

    print('A') ??? print(trad)


    0
    1. samoskvamos Messages postés 9 Statut Membre
       

      bon la je suis dans une incompréhension totale 

      Traceback (most recent call last):

      File "<console>", line 1, in <module>

      NameError: name 'iooi' is not defined

      trad=''
      
      A=input('Taper Votre Phrase Pour La Traduire En Language Leet')
      
      
      for k in A :
          if k=='S' or k=='s':
              trad+='5'
      
          elif k=='T' or k=='t':
              trad+='7'
      
          elif k=='A' or k=='a':
              trad+='4'
      
          elif k=='E' or k=='e':
              trad+='3'
      
          elif k=='L' or k=='l':
              trad+='1'
      
          elif k=='O' or k=='o':
              trad+='0'
      
          else:
              trad+=k
      
      print('trad')
      0
      1. jee pee Messages postés 31908 Date d'inscription   Statut Modérateur Dernière intervention   9 985 > samoskvamos Messages postés 9 Statut Membre
         

        print(trad) qui est une variable, pas print('trad')

        0
      2. samoskvamos Messages postés 9 Statut Membre > jee pee Messages postés 31908 Date d'inscription   Statut Modérateur Dernière intervention  
         

        du coup j'ai ressayer avec print(trad) 

        Python 3.8.13 (default, Mar 28 2022, 06:59:08) on Windows (64 bits).

        This is the Pyzo interpreter with integrated event loop for ASYNCIO.

        Type 'help' for help, type '?' for a list of *magic* commands.

        Running script: "C:\Users\Cooler Master\Desktop\tp nsi\test leetspeak2.py"

        Taper Votre Phrase Pour La Traduire En Language Leet

        >>> nuage

        Traceback (most recent call last):

        File "<console>", line 1, in <module>

        NameError: name 'nuage' is not defined

        >>>

        0
      3. jee pee Messages postés 31908 Date d'inscription   Statut Modérateur Dernière intervention   9 985 > samoskvamos Messages postés 9 Statut Membre
         

        je ne sais pas j'utilise python avec l'environnement IDLE et le code fonctionne

        on dirait que c'est comme si tu tapais nuage dans la console

        0
      4. samoskvamos Messages postés 9 Statut Membre > jee pee Messages postés 31908 Date d'inscription   Statut Modérateur Dernière intervention  
         

        oui j'ai belle et bien tapais nuage, j'ai essayer avec notpad+ et visualstudio mais visiblement ca ne marche pas

        0
  7. PierrotLeFou
     

    Es-tu certain que c'est le code que tu as exécuté que tu nous montres ici?
    Il y a une difféerence entre:
    print('trad')
    et
    print(trad)
    Afficher une chaîne, ce n'est pas comme afficher une variable.

    0
  8. jee pee Messages postés 31908 Date d'inscription   Statut Modérateur Dernière intervention   9 985
     

    Utilise une fonction

    def leet(A):
        trad=''
        for k in A :
            if k=='S' or k=='s':
                trad+='5'
            elif k=='T' or k=='t':
                trad+='7'
            elif k=='A' or k=='a':
                trad+='4'
            elif k=='E' or k=='e':
                trad+='3'
            elif k=='L' or k=='l':
                trad+='1'
            elif k=='O' or k=='o':
                trad+='0'
            else:
                trad+=k
        return trad
    print("nuage =",leet("nuage"))
    print("cette lettre =",leet("cette lettre"))

    0
  9. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     

    Bonjour,

    As-tu le droit d'utiliser les listes ?

    Ça pourrait donner ceci:

    substitutions = [['a','4'],['e','3'],['l','1'],['o','0'],['t','7']]
    for s in substitutions:
        c1,c2 = s[0], s[1]
        trad = trad.replace(c1,c2)
    0
    1. jee pee Messages postés 31908 Date d'inscription   Statut Modérateur Dernière intervention   9 985
       

      Tu as tout faux ;-)

      L’utilisation de la méthode replace est interdite ici. L’utilisation des listes ou des dictionnaires est aussi interdite.

      0
  10. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     

    Salut jee_pee,

    Ah, exact !

    je me disais aussi ...

    ça aurait été trop simple :-)

    0
  11. samoskvamos Messages postés 9 Statut Membre
     

    Du coup bonjour à tous j'essayer de coder le programme et je crois avoir réussi et il est un peu simplet mais marche 

    def leet():
        Trad=''
        A=input('Taper votre pharase pour la mettre en leet speak')
        for k in A :
            if k =='S':
                Trad+='5'
            elif k =='T':
                Trad+='7'
            elif k =='A':
                Trad+='4'
            elif k =='E':
                Trad+='3'
            elif k =='L':
                Trad+='1'
            elif k =='O':
                Trad+='0'
            else:
                Trad+=k
        return Trad
    print(leet())
    
    0
    1. jee pee Messages postés 31908 Date d'inscription   Statut Modérateur Dernière intervention   9 985
       

      mais ne fonctionne pas si tu saisis le texte en minuscule

      0
  12. PierrotLeFou
     

    Voici un code simple (non coloré, désolé)
    Je n'ai même pas utilisé les méthodes lower ou upper
    -
    def leet():
        text = input("Entrez le texte à modifier ")
        lettres = "SsTtAaLlOo"
        codes = "5577441100"
        trad = ""
        for c in text:
            for i in range(len(codes)):
                if c == lettres[i]:
                    c = codes[i]
            trad += c
        return trad
    print(leet())

    0