Erreur d'affichage

Fermé
Olaeradrik Messages postés 2 Date d'inscription dimanche 28 septembre 2014 Statut Membre Dernière intervention 28 septembre 2014 - 28 sept. 2014 à 18:03
Forceseek Messages postés 321 Date d'inscription samedi 24 septembre 2011 Statut Membre Dernière intervention 22 janvier 2015 - 29 sept. 2014 à 19:20
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()
A voir également:

3 réponses

Olaeradrik Messages postés 2 Date d'inscription dimanche 28 septembre 2014 Statut Membre Dernière intervention 28 septembre 2014
28 sept. 2014 à 18:05
Si pouviez répondre le plus vite possible se serait parfait! Merci!
0
Forceseek Messages postés 321 Date d'inscription samedi 24 septembre 2011 Statut Membre Dernière intervention 22 janvier 2015 71
29 sept. 2014 à 18:42
Oulah tu aurais dû faire un fichier de correspondance, là c'est un peu dégueu :)
0
Forceseek Messages postés 321 Date d'inscription samedi 24 septembre 2011 Statut Membre Dernière intervention 22 janvier 2015 71
29 sept. 2014 à 19:20
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