Creer pros python leet speak sans replace et dictio

Fermé
samoskvamos - Modifié le 6 nov. 2022 à 14:42
 PierrotLeFou - 7 nov. 2022 à 14:53

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

A voir également:

11 réponses

jee pee Messages postés 40435 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 novembre 2024 9 417
6 nov. 2022 à 15:43

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
samoskvamos Messages postés 7 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 7 novembre 2022
6 nov. 2022 à 16:08

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
jee pee Messages postés 40435 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 novembre 2024 9 417 > samoskvamos Messages postés 7 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 7 novembre 2022
6 nov. 2022 à 16:24

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

0
jee pee Messages postés 40435 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 novembre 2024 9 417 > jee pee Messages postés 40435 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 novembre 2024
6 nov. 2022 à 16:28

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
PierrotLeFou
6 nov. 2022 à 17:51

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
samoskvamos Messages postés 7 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 7 novembre 2022
6 nov. 2022 à 18:14

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
jee pee Messages postés 40435 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 novembre 2024 9 417 > samoskvamos Messages postés 7 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 7 novembre 2022
Modifié le 6 nov. 2022 à 18:28

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

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
samoskvamos Messages postés 7 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 7 novembre 2022
6 nov. 2022 à 19:35

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jee pee Messages postés 40435 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 novembre 2024 9 417
6 nov. 2022 à 19:42

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


0
samoskvamos Messages postés 7 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 7 novembre 2022
6 nov. 2022 à 20:04

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
jee pee Messages postés 40435 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 novembre 2024 9 417 > samoskvamos Messages postés 7 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 7 novembre 2022
6 nov. 2022 à 20:15

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

0
samoskvamos Messages postés 7 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 7 novembre 2022 > jee pee Messages postés 40435 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 novembre 2024
6 nov. 2022 à 20:23

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
jee pee Messages postés 40435 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 novembre 2024 9 417 > samoskvamos Messages postés 7 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 7 novembre 2022
6 nov. 2022 à 20:26

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
samoskvamos Messages postés 7 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 7 novembre 2022 > jee pee Messages postés 40435 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 novembre 2024
6 nov. 2022 à 20:32

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

0
PierrotLeFou
7 nov. 2022 à 01:37

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
jee pee Messages postés 40435 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 novembre 2024 9 417
7 nov. 2022 à 09:09

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
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
7 nov. 2022 à 11:17

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
jee pee Messages postés 40435 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 novembre 2024 9 417
7 nov. 2022 à 11:22

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
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
7 nov. 2022 à 11:53

Salut jee_pee,

Ah, exact !

je me disais aussi ...

ça aurait été trop simple :-)

0
samoskvamos Messages postés 7 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 7 novembre 2022
7 nov. 2022 à 12:35

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
jee pee Messages postés 40435 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 novembre 2024 9 417
7 nov. 2022 à 12:54

mais ne fonctionne pas si tu saisis le texte en minuscule

0
PierrotLeFou
7 nov. 2022 à 14:53

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