Je travail sur un programme de cryptographie et j'utilise une fonction pour crypter mon message.
Seulement la fonction m'affiche l’erreur suivante et je ne comprend pas pourquoi cela ne marche pas.
Voici mon code :
from tkinter import *
#-------------------------On définis les fonctions--------------------------
liste = []
liste1 = []
def lettre(n):
return chr(n+65)
def num(caractere):
return ord(caractere)-65
def fn1() :
def valider() :
a = s.get()
b = sp1.get()
c = sp2.get()
liste[:] = [a, b, c]
return liste
fn.destroy
fn = Toplevel()
fn.geometry("300x200")
messagenoncodé = Label(fn, text = "Votre message doit être en majuscules uniquement!").pack()
entryVar = StringVar()
s = Entry( fn, textvariable = StringVar() )
s.pack( side=TOP )
cond1 = Label(fn, text="Le premier coéfficient doit être impair !").pack()
spinVar1 = IntVar()
sp1 = Spinbox( fn, from_=0, to=26, textvariable = IntVar() )
sp1.pack()
spinVar2 = IntVar()
sp2 = Spinbox( fn, from_=0, to=999, textvariable = IntVar() )
sp2.pack()
Canvas(fn, width = 50, height = 10).pack()
but1 = Button(fn, text ='Valider', command = valider).pack(side = LEFT, padx = 3, pady = 3)
but4 = Button(fn, text= 'Chiffrer', command = codage).pack(side = TOP, padx = 3, pady = 3)
but2 = Button(fn, text ='Dechiffrer').pack(side = RIGHT, padx = 3, pady = 3)
but3 = Button(fn, text = 'Quitter', command = fn.destroy).pack(side = BOTTOM, padx = 3, pady = 3)
lab = Label(fn).pack
def codage() :
C = 0
x = liste[0]
for C in x :
y = (num(C)*liste[1]+liste[2])%26
liste1.append(y)
print(liste1)
print("est votre message codé !")
Et voici l"erreur rencontrée :
Traceback (most recent call last):
File "F:\EduPython\App\lib\tkinter\__init__.py", line 1538, in __call__
return self.func(*args)
File "F:\Projet cryptographie\ISN\programme.py", line 63, in codage
y = (num(C)*liste[1]+liste[2])%26
TypeError: not all arguments converted during string formatting
Toute façon ça peut pas fonctionner (ligne 16 à 25)
>>> def test():
... def valider():
... pass
...
>>> valider()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'valider' is not defined
La fonction valider ne peut pas être appelée.
Ensuite, c'est fn1 qui devrait être appelé, et retourner un callback, donc la fonction valider.
Pourtant lorsque je print list[0], list[1] et liste[2], cela m’affiche bien le mot et les valeurs entrés dans mon entry et mes spinbox.
Problemes fonction
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...