Erreur d'affichage

Bonjour à tous. J'essaye de créer un programme pour traduire le français vers le Leet Speak et vice-versa mais je suis bloqué à la fin. Si vous le testez vous verrez qu'il n'affiche pas le bon résultat. je ne sais pas où je me suis trompé car il n'y a plus de message d'erreur. Merci de m'aider et de m'indiquer ma faute. Merci

from tkinter import*

#Functions#
#--------------------------------------------------------------------------#
#les modifications sont effectuées pour n'obtenir plus qu'un seul caractère

def changer_la_lettre_en_leet(mot):
mot=mot.lower()
if mot=='a':
return '4'
if mot=='b':
return 'ß' #attention j'ai changé le 8 en ß
if mot=='c':
return '('
if mot=='d':
return '?' #atention j'ai changé le |) en ?
if mot=='e':
return '3'
if mot=='f':
return 'f' #attention j'ai changé le |= en f
if mot=='g':
return '6'
if mot=='h':
return '#'
if mot=='i':
return '1'
if mot=='j':
return ';' #attention j'ai changé le _| en ;
if mot=='k':
return 'X'
if mot=='l':
return '£'
if mot=='m':
return 'Ñ' #attention j'ai changé le |v| en Ñ
if mot=='n':
return '?' #attention j'ai chanché le ^| en ?
if mot=='o':
return '0'
if mot=='p':
return '¶' #attention j'ai changé le |° en ¶
if mot=='q':
return 'Ø' #attention j'ai changé le (_,) en Ø
if mot=='r':
return '2'
if mot=='s':
return '$'
if mot=='t':
return '7'
if mot=='u':
return 'µ'
if mot=='v':
return '?' #attention j'ai changé le \/ en ?
if mot=='w':
return '?'
if mot=='x':
return '?'
if mot=='y':
return 'j'
if mot=='z':
return '?'
if mot==' ':
return ' '

if mot!='a'or'b'or'c'or'd'or'e'or'f'or'g'or'h'or'i'or'j'or'k'or'l'or'm'or'n'or'o'or'p'or'q'or'r'or's'or't'or'u'or'v'or'w'or'x'or'y'or'z':
return mot

def changer_le_leet_en_lettre(mot):
if mot=='4':
return 'a'
if mot=='ß':
return 'b'
if mot=='(':
return 'c'
if mot=='?':
return 'd'
if mot=='3':
return 'e'
if mot=='f':
return 'f'
if mot=='6':
return 'g'
if mot=='#':
return 'h'
if mot=='1':
return 'i'
if mot==';':
return 'j'
if mot=='X':
return 'k'
if mot=='£':
return 'l'
if mot=='Ñ':
return 'm'
if mot=='?':
return 'n'
if mot=='0':
return 'o'
if mot=='¶':
return 'p'
if mot=='Ø':
return 'q'
if mot=='2':
return 'r'
if mot=='$':
return 's'
if mot=='7':
return 't'
if mot=='µ':
return 'u'
if mot=='?':
return 'v'
if mot=='?':
return 'w'
if mot=='?':
return 'x'
if mot=='j':
return 'y'
if mot=='?':
return 'z'
if mot==' ':
return ' '
return mot

def Traduction1():
nouvelle_phrase=str()
phrase1=str(phrase)
for a in range(0,len(phrase1)):
b=str(phrase1[a])
nouvelle_phrase=nouvelle_phrase+changer_la_lettre_en_leet(b)
print ('traduction:',nouvelle_phrase)

def Traduction2():
phrase1=str(phrase)
nouvelle_phrase=str()
for a in range(0,len(phrase1)):
b=str(phrase1[a])
nouvelle_phrase=nouvelle_phrase+changer_le_leet_en_lettre(b)
print('traduction:',nouvelle_phrase)

#Programme Princilpal#
#-----------------------------------------------------------------------------#

Fenetre = Tk()
Fenetre.title('traduction')

# Création d'un widget Label
Label1 = Label(Fenetre, text = 'Texte ')
Label1.pack(side = LEFT, padx = 5, pady = 5)

# Création d'un widget Entry (champ de saisie)
phrase= StringVar()
Champ = Entry(Fenetre, textvariable= phrase, bg ='black', fg='white')
Champ.focus_set()
Champ.pack(side = LEFT, padx = 5, pady = 5)

#Création d'un bouton pour le premier type de traduction
Bouton_Latin_vers_Leet=Button(Fenetre,text="traduction de l'alphabet latin vers Leet Speak",command=Traduction1)
#Positionnement du bouton
Bouton_Latin_vers_Leet.pack(side=LEFT,padx=5,pady=5)

#Création d'un bouton pour le deuxième type de traduction
Bouton_Leet_vers_Latin=Button(Fenetre,text="traduction du Leet Speak vers le Latin",command=Traduction2)
#Positionnement du bouton
Bouton_Leet_vers_Latin.pack(side=LEFT,padx=5,pady=5)

Fenetre.mainloop()

3 réponses

  1. Si pouviez répondre le plus vite possible se serait parfait! Merci!
    0
    1. Oulah tu aurais dû faire un fichier de correspondance, là c'est un peu dégueu :)
      0
      1. Mais sinon tu as dû remarquer que ta phrase était tout le temps l'équivalence de PY_VAR0 un truc du genre. Tu as mal utilisé ton StringVar()
        Pour obtenir le contenu du champ tu devrais faire phrase1 = str(Champ.get())

        Voici une version un peu plus propre faite à la va-vite :

        from tkinter import * #On import Tkinter

        corresFile = open("corres.txt","r") #Ouverture du fichier de correspondance
        corresList = corresFile.readlines() #Placement de toutes les lignes du fichier dans une liste
        corresFile.close()
        corresFrToLeetDict = {} #Dictionnaire Francais vers Leet
        corresLeetToFrDict = {} #Dictionnaire Leet vers Francais
        for item in corresList: #Pour chaque ligne du fichier correspondance
        index, corres = item.split("=") #On remplit les deux dictionnaires
        corresFrToLeetDict[index] = corres.replace("\n","")
        corresLeetToFrDict[corres.replace("\n","")] = index

        def traduction(mode): #Fonction de traduction
        if mode == "Fr": #Vers le Francais
        leetText = str(Champ.get())
        leetText = leetText.replace("|\\/|","m") #On remplace d'office les caractères leet à plus de 1 caractère
        leetText = leetText.replace("\\/\\/","w")
        leetText = leetText.replace("|\\|","n")
        leetText = leetText.replace("\\/","v")
        frText = ""
        for letter in leetText: #On remplace chaque lettre
        if letter == " ":
        frText += " "
        else:
        try:
        frText += corresLeetToFrDict[letter.lower()]
        except KeyError: #Si aucune correspondance
        frText += "?" #On ajoute un ?
        print(frText)

        elif mode == "Leet":
        frText = str(Champ.get())
        leetText = ""
        for letter in frText: #On remplace chaque lettre
        if letter == " ":
        leetText += " "
        else:
        try:
        leetText += corresFrToLeetDict[letter.lower()]
        except KeyError:
        leetText += "?"
        print(leetText)

        leetText = ""
        frText = ""

        Fenetre = Tk()
        Fenetre.title('Traduction')

        # Création d'un widget Label
        Label1 = Label(Fenetre, text = 'Texte ')
        Label1.pack(side = LEFT, padx = 5, pady = 5)

        # Création d'un widget Entry (champ de saisie)
        phrase= StringVar()
        Champ = Entry(Fenetre, bg ='black', fg='white')
        Champ.focus_set()
        Champ.pack(side = LEFT, padx = 5, pady = 5)

        #Création d'un bouton pour le premier type de traduction
        Bouton_Latin_vers_Leet=Button(Fenetre,text="Traduction de l'alphabet latin vers Leet Speak",command=lambda:traduction("Leet"))
        #Positionnement du bouton
        Bouton_Latin_vers_Leet.pack(side=LEFT,padx=5,pady=5)

        #Création d'un bouton pour le deuxième type de traduction
        Bouton_Leet_vers_Latin=Button(Fenetre,text="Traduction du Leet Speak vers le Latin",command=lambda:traduction("Fr"))
        #Positionnement du bouton
        Bouton_Leet_vers_Latin.pack(side=LEFT,padx=5,pady=5)

        Fenetre.mainloop()

        Et le fichier de correspondance :
        a=4
        b=ß
        c=(
        d=d
        e=3
        f=f
        g=6
        h=#
        i=1
        j=;
        k=k
        l=£
        m=|\/|
        n=|\|
        o=0
        p=¶
        q=Ø
        r=2
        s=$
        t=7
        u=µ
        v=\/
        w=\/\/
        x=x
        y=j
        z=z

        Pense à utiliser la balise code la prochaine fois, j'ai dû tout réindenter ton code manuellement :)
        0