Erreur d'affichage

Olaeradrik Messages postés 3 Statut Membre -  
Forceseek Messages postés 377 Statut Membre -
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. Olaeradrik Messages postés 3 Statut Membre
     
    Si pouviez répondre le plus vite possible se serait parfait! Merci!
    0
  2. Forceseek Messages postés 377 Statut Membre 71
     
    Oulah tu aurais dû faire un fichier de correspondance, là c'est un peu dégueu :)
    0
  3. Forceseek Messages postés 377 Statut Membre 71
     
    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