Le "multiplier par" bug, AU SECOURS

Résolu/Fermé
Utilisateur anonyme - Modifié le 14 mars 2020 à 16:46
 Utilisateur anonyme - 14 mars 2020 à 18:27
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

Utilisateur anonyme
14 mars 2020 à 17:15
Je l’au déjà fais mais ça écris 5 fois le même chiffre
2
M3NSONG3 Messages postés 615 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 4 novembre 2021 162
Modifié le 14 mars 2020 à 18:12
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()

1
Utilisateur anonyme
14 mars 2020 à 18:27
Merci énormément à toi ^^!
0
yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
14 mars 2020 à 17:04
bonjour, ne devrais-tu pas ajouter quelques
print()
pour comprendre ce que fais ton code?
0