Le "multiplier par" bug, AU SECOURS [Résolu]

Signaler
Messages postés
14
Date d'inscription
jeudi 5 mars 2020
Statut
Membre
Dernière intervention
14 mars 2020
-
 St4rG0ld -
Yo, j'ai un petit bug au niveau de mon code, je veux multiplier le résultat d'une Entry qui a été get() et le mettre dans un fichier mais au lieu de me multiplier, soit il ne fait rien, soit il écris 5 fois le même chiffre, voila le bout du code qui bug

from tkinter import *
import os

root = Tk()

root.geometry("750x550")

slcen = StringVar()
    
slc = Entry(root, textvariable=slcen)
slc.focus_set()
slc.pack(padx=0, pady = 20)

aml = slc.get()

aeu = aml*5

def geted():
    notes = slc.get()
    print(slc.get())
    
    slc.delete(0, END)

    cnt = open("Affiliedmarkshlprs.txt", "a")
    cnt.write("\neleves : ")
    cnt.write(notes)
    cnt.write("/10")
    cnt.write(" Pourcentage de réussite :")
    cnt.write(aml*5)
    cnt.close()


3 réponses

Je l’au déjà fais mais ça écris 5 fois le même chiffre
Messages postés
545
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
21 mars 2020
86
C'est normal. slc.get() te renvoie un string.
Quand tu multiplies un string il l'affiche autant de fois que nécessaire à la suite. Tu dois d'abord convertir ton string en valeur chiffrée avant de la multiplier :
"1"*5 = "11111"
1*5 = 5

Essaye d'utiliser la fonction int().
Si tu n'es pas sûr des types de tes variables tu peux sois print comme te le précise yg_be, ou utiliser la fonction type().


Exemple de code :
from tkinter import *
import os

root = Tk()

root.geometry("750x550")

slcen = StringVar()
    
slc = Entry(root, textvariable=slcen)
slc.focus_set()
slc.pack(padx=0, pady = 20)

try:
    aml = int(slc.get())
except: 
    # Entrée invalide, sors du code comme tu veux...
aeu = aml*5

def geted():
    notes = slc.get()
    print(slc.get())
    
    slc.delete(0, END)

    cnt = open("Affiliedmarkshlprs.txt", "a")
    cnt.write("\neleves : ")
    cnt.write(notes)
    cnt.write("/10")
    cnt.write(" Pourcentage de réussite :")
    cnt.write(aml*5)
    cnt.close()

Merci énormément à toi ^^!
Messages postés
10153
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 mars 2020
572
bonjour, ne devrais-tu pas ajouter quelques
print()
pour comprendre ce que fais ton code?