Le "multiplier par" bug, AU SECOURS

Résolu
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()


Les gens vivent en s'appuyant sur leurs convictions et leurs connaissances et ils appellent ça la réalité.

3 réponses

  1. Je l’au déjà fais mais ça écris 5 fois le même chiffre
    1. 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. Merci énormément à toi ^^!
    2. Contributeur
      bonjour, ne devrais-tu pas ajouter quelques
      print()
      pour comprendre ce que fais ton code?