Partage
  • Partager sur Facebook
  • Partager sur Twitter

CSV utilisation

je n'arrive pas a ressortir ma liste en lecture

Sujet résolu
    19 décembre 2021 à 18:21:03

    Je fais un jeu un clicker et dans celui ci je veux ajouter des sauvegardes avec csv. J'ai donc rajouté un fichier csv qui met ma variable fric sous cette forme, exemple: fric=685 donc ma liste sera sous cette forme["6","8","5"], j'ai donc "bricolé" pour essayer d'extraire ceci pour n'en faire qu'un seul chiffre mais je n'y arrive pas, également j'ai du mal a extraire la liste.

    PS: je sais que mon code est dégueulasse patati patata mais je débute :)

    Voici mon code(python 3.6):

    import csv
    import tkinter
    from tkinter import *
    import random
    import os
    
    # Variables
    
    fric = 0
    fpc = 1
    fps = 0
    TITAN = 0
    GOD = 0
    color = '#ffffff'
    reducfpc = 0
    prixfpcvar = 20
    nbreachatcolor = 0
    nbreachatgod = 0
    nbretourgod = 0
    upgradewindow = ""
    tktgod = "+ 1 fpc (20$)"
    _fricpopup = 0
    
    
    # fonction de la fenetre principale
    
    def quitwindow():
        global fric, score, writer, listfriccreation
        with open("score.txt", "w") as score:
            writer = csv.writer(score)
            listfriccreation = list(str(fric)) #ici on enregistre dan sune liste le résultat puis on quitte le jeu
            writer.writerow(listfriccreation)
            print(str(listfriccreation))
        root.quit()
    
    
    
    def click():
        global fric, fpc, _god, _titan, TITAN, GOD, color, root, button, fpc1, gradetitan, gradegod, _fricpopup
        fric += fpc
        _fric.config(text=fric)
        _fricpopup.config(text="")
        _fricpopup.config(text=fric)
        if _god or _titan == "Sorry bro :/":
            _god.config(text="pas de grade")
            _titan.config(text="pas de grade")
        if TITAN == 1:
            color = "#"
            for i in range(6):
                color = color + str(
                    random.choice(["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]))
            root.config(bg=color)
            frame.config(bg=color)
            button.config(bg=color)
            fpc1.config(bg=color)
            gradetitan.config(bg=color)
            gradegod.config(bg=color)
    
    # fenetre
    root = Tk()
    root.title("ClickIt")
    root.configure(bg='#a3774a')
    frame = Frame(root, bg='#a4774a')
    frame.pack(expand=YES)
    
    # aller chercle l'inmage du cookie et l'applique a la variable photo
    photo = tkinter.PhotoImage(file=r"C:\8\cookie\cookiechoco.png")
    
    # bouton
    button = Button(frame, text="clique >:(", font=("courrier", 40), command=click, bg=color, image=photo)
    button.pack(pady=50, fill=X)
    # label
    
    _fric = Label(frame, text=fric, fg='white', bg='#582900')
    _fric.pack()
    
    # on essaye d'aller lire les infos, dans le cas ou le fichier n'est pas crée on le crée sinn on le lit et on l'affiche sur le label _fric
    if os.path.isfile("fric.txt"):
        global listfriccreation
        with open("fric.txt", "r") as score:
            myreader = csv.reader(score, delimiter=",")
            listtest = myreader[0]
            recollagedelaliste = ""
            for i in listtest:
                recollagedelaliste += str(i)
            print(recollagedelaliste)
            _fric.config(text=recollagedelaliste)
    else:
        with open("fric.txt", "w") as score:
            writer = csv.writer(score)
            writer.writerow([fric])
    
    
    # [Menu bar
    
    menubar = Menu(root)
    file_menu = Menu(menubar, tearoff=0)
    
    # premier menu]
    
    file_menu.add_command(label="Click")
    file_menu.add_command(label="upgrades",)
    file_menu.add_command(label="quitter", command=root.quit)
    menubar.add_cascade(label="Outils", menu=file_menu)
    
    # fonction qui crée la pop up et tous ses buttons et composants
    
    
    def createwindow():
        global _fpc, _god, _titan
        global upgradewindow
        global _fric
        global _fricpopup
        global tkinter
        global TITTAN
    
        root.withdraw()
    
    
        def powerfulcolor():
            global fric
            global _titan
            global TITAN
            global reducfpc
            global nbreachatcolor
            global TITAN
    
            if fric > 10 and nbreachatcolor == 0:
                upgradewindowerror.config(text="GG new grade unlock titan")
                TITAN = 1
                nbreachatcolor += 1
                fric -= 10
                _fricpopup.config(text=fric)
                _fric.config(text=fric)
            elif nbreachatcolor >= 1:
                upgradewindowerror.config(text="Déjà acheté")
    
            else:
                upgradewindowerror.config(text="Sorry bro :/")
            return TITTAN
    
        def add1fpc():
            global fpc
            global fric
            global reducfpc
            if reducfpc == 1 and fric >= 10:
                fric -= 10
                fpc += 1
                _fric.config(text=fric)
            elif reducfpc == 0 and fric >= 20:
                fric -= 20
                fpc += 1
                _fric.config(text=fric)
                _fricpopup.config(text=fric)
            else:
                upgradewindowerror.config(text="pas assez de fric :/")
            _fpc.config(text=fpc)
    
        def buygod():
            global GOD
            global fric
            global reducfpc
            global nbretourgod
            global _fricpopup
            if fric > 10 and nbretourgod == 0:
                upgradewindow.config(text="grade débloqué")
                GOD = "ok"
                reducfpc = 1
                nbretourgod += 1
                txtgod = "+ 1 fpc (10 $)"
                fric -= 10
                _fricpopup.config(text=fric)
                _fric.config(text=fric)
            elif nbretourgod >= 1:
                upgradewindowerror.config(text="Déjà acheté")
            else:
                upgradewindowerror.config(text="Sorry bro :/")
    
        def backtocookie():
            upgradewindow.withdraw()
            root.deiconify()
    
        # créé la pop up
        upgradewindow = tkinter.Toplevel(root)
        upgradewindow.geometry("1000x1000")
        upgradewindow.config(bg='#a4774a')
    
    
        label = Label(upgradewindow, text="UPGRADES")
        label.pack()
        # création de la menubar
    
        menubarpopup = Menu(upgradewindow)
        file_menupopup = Menu(menubarpopup, tearoff=0)
    
        # premier menu
    
        file_menupopup.add_command(label="Click", command=backtocookie)
        file_menupopup.add_command(label="upgrades")
        file_menupopup.add_command(label="quitter le jeu", command=root.quit)
        menubarpopup.add_cascade(label="Outils", menu=file_menupopup)
    
        # frame de la pop-up
        framepopuptxt = Frame(upgradewindow,  bg='#a4774a')
        framepopuptxt.pack()
        framepopupfpc = Frame(upgradewindow,  bg='#a4774a')
        framepopupfpc.pack()
        framepopupcolor = Frame(upgradewindow,  bg='#a4774a')
        framepopupcolor.pack()
        framepopupprice = Frame(upgradewindow,  bg='#a4774a')
        framepopupprice.pack()
        framepricecount = Frame(upgradewindow,  bg='#a4774a')
        framepricecount.pack()
    
        # mettre les boutons
        buttonpopupfpc = Button(framepopupfpc, text="+ 1 fpc", command=add1fpc, bg="#582900", fg='white')
        buttonpopupfpc.pack(pady=50, fill=X)
        buttonpopupcolor = Button(framepopupcolor, text="achète le grade powerfulcolor", command=powerfulcolor, bg='#582900', fg='white')
        buttonpopupcolor.pack(pady=50, fill=X)
        buttonpopupprice = Button(framepopupprice, text="Divise les prix par deux", command=buygod, bg="#582900", fg='white')
        buttonpopupprice.pack(pady=50, fill=X)
    
        # labels
        _fpc = Label(framepopupfpc, text=fpc)
        _fpc.pack()
        _titan = Label(framepopupcolor, text="pas de grade",  bg='#a4774a', fg='white')
        _titan.pack()
        _god = Label(framepopupprice, text="pas de grade", bg="#582900", fg='white')
        _god.pack()
        _txtpopup = Label(framepricecount, text=" VOUS POSSÉDEZ ACTUELLEMENT :", bg="#582900", fg='white')
        _txtpopup.pack()
        _fricpopup = Label(framepricecount, text=fric, bg="#582900", fg='white')
        _fricpopup.pack()
        upgradewindowerror = Label(framepricecount, text="", bg="#582900", fg='white')
        upgradewindowerror.pack()
        upgradewindow.config(menu=menubarpopup)
    
        return TITTAN
    # fin de la pop up
    # création des frames(ne servent pas en partie)
    
    
    
    # [Menu bar
    menubar = Menu(root)
    file_menu = Menu(menubar, tearoff=0)
    
    
    # ]premier menu
    
    file_menu.add_command(label="Click")
    file_menu.add_command(label="upgrades", command=createwindow)
    file_menu.add_command(label="quitter", command=quitwindow)
    menubar.add_cascade(label="Outils", menu=file_menu)
    
    root.config(menu=menubar)
    
    # afficher la page
    root.mainloop()



    • Partager sur Facebook
    • Partager sur Twitter
      19 décembre 2021 à 18:48:30

      Pourquoi ne pas stocker le nombre sans le découper? Pourquoi 260 lignes de code dont beaucoup n'ont rien à voir pour montrer lire et écrire dans un CSV?

      • Partager sur Facebook
      • Partager sur Twitter
        19 décembre 2021 à 22:49:42

        Si j’ai bien compris, tu veux transformer une liste du type ["1","3","5"] en entier, dans cet exemple 135.

        Si c’est bien le cas, utilise mon_entier=int("".join(ma_liste))

        Explications:

        on concatène tous les éléments de la liste avec comme séparateur "", c’est à dire aucun séparateur, puis on tranforme le résultat, dans l’exemple "135" en entier avec int()

        • Partager sur Facebook
        • Partager sur Twitter

        pensez à mettre un pouce en l'air si le message vous a aidé! 

          20 décembre 2021 à 9:26:15

          Bonjour, après un essai je me retrouve avec les mêmes erreurs que hier."TypeError: '_csv.reader' object is not subscriptable" lorsque j'éxecute mon script.Dans mon programme qui me permet de quitter la fenêtre et d'enregistrer la variable fric dans un fichier csv. Voici ce code
          def quitwindow():
              global fric, score, writer, listfriccreation
              with open("score.txt", "w") as score:
                  writer = csv.writer(score)
                  listfriccreation = list(str(fric)) #ici on enregistre dan sune liste le résultat puis on quitte le jeu
                  writer.writerow(listfriccreation)
                  print(str(listfriccreation))
              root.quit()



          au démarrage mon programme crée un fichier csv pour la première fois si nécessaire ou sinon il lit le contenus.

          Voici le code:

          # on essaye d'aller lire les infos, dans le cas ou le fichier n'est pas crée on le crée sinn on le lit et on l'affiche sur le label _fric
          if os.path.isfile("fric.txt"):
              global listfriccreation
              with open("fric.txt", "r") as score:
                  myreader = csv.reader(score, delimiter=",")
                  listtest = myreader[0]
                  recollagedelaliste=int("".join(listfriccreation))
                  print(recollagedelaliste)
                  _fric.config(text=recollagedelaliste)
          else:
              with open("fric.txt", "w") as score:
                  writer = csv.writer(score)
                  writer.writerow([fric])



          Mais je n'arrive pas a le faire marcher :(

          -
          Edité par RobinBONFILL1 20 décembre 2021 à 9:35:11

          • Partager sur Facebook
          • Partager sur Twitter
            20 décembre 2021 à 11:48:20

            tu as remarqué que le nom des fichiers était différent ? d'un côté, score.txt et de l'autre fric.txt :-°
            • Partager sur Facebook
            • Partager sur Twitter
              20 décembre 2021 à 14:45:06

              Le not subscriptable provient sans doute de la ligne 6: listtest = myreader[0] qui pourrait être remplacée par listtest = next(myreader).

              Mais un fichier CSV pour stocker un nombre aavec autant de colonnes que de chiffres, c'est un peu surdimensionné: un simple fichier texte aurait suffit.

              • Partager sur Facebook
              • Partager sur Twitter
                20 décembre 2021 à 14:55:46

                Oupss la boulette mais même en changeant le nom j'ai toujours une erreur sur la ligne 6 du second programme.
                • Partager sur Facebook
                • Partager sur Twitter
                  20 décembre 2021 à 15:14:18

                  suis la recommandation de mps pour lire ton enregistrement myreader
                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 décembre 2021 à 16:10:04

                    mps a écrit:

                    Le not subscriptable provient sans doute de la ligne 6: listtest = myreader[0] qui pourrait être remplacée par listtest = next(myreader).

                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 décembre 2021 à 13:40:13

                      Merci énormément. Par la suite j'ai eu quelques autres erreurs que j'ai réussi a enlever maintenant mon programme fait des sauvegardes du score. Maintenant je vais m'attaquer a un moyen d'associer le score a un nom. Pour se connecter "sur un scession" pour dire. si jean se roconnecte je remet son score a 1245 par contre si une nouvelle personne se connecte on met son score a zéro.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      CSV utilisation

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      • Editeur
                      • Markdown