Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercices du cours Python / postez ici !

    18 août 2019 à 0:35:40

    Bonjour Emmanuel Jean !

    Vérifie tes lignes 8 et 38-39 (fonctions ajout_joueur(nom_joueur, score) et vérif_joueur(nom_joueur)): décortique bien les étapes !
    Selon moi, la réponse à ton problème se trouve à la ligne 8 car tu re-défini ta variable : tu n'ajoutes pas de valeures !!! De plus, en écrivant 'open('fichier.txt', 'ab')', tu écris à la suite de ton fichier, ça crée une erreur de syntaxe :
    Voila à quoi peut ressembler le contenu de ton fichier texte :

    ---> 1er ajout : scores = {'joueur_a':12}
    ---> 2eme ajout : scores = {'joueur_a':12}scores = {'joueur_b':13}

    Ainsi, la dernière définition de la variable <scores> est "scores = {'joueur_b':13}" !  Choisis plutôt de récupérer ta variable (si elle existe !) puis de l'incrémenter d'une valeure puis enfin de la ré-enregistrer, c'est ce que je ferais. Pour ajouter une valeure à un dictionnaire, tu utilises la syntaxe suivante : "dictionnaire['clé'] = 'valeure'".

    De plus, en ce qui concerne les lignes 38-39, pour chaques valeurs contenues dans ton dictionnaire <scores>, tu décides de ré-enregistrer ta variable <scores> avec "else" si ton "if" n'est pas validé. Puisque tu écris dans ton fichier avec 'ab', tu ajoutes continuellement le même joueur à ton dictionnaire que tu rédéfinit avec une seule valeure, c'est pas étonnant que ton programme n'affiche que le premier enregistrement !

    Revoie ton code, et dis moi si tu trouves vraiment pas (ton post est anciens et je penses que t'a trouvé la solution à ton problème depuis, je donne seulement mon point de vue ça peut être utile !!)

    Bon courage !

    • Partager sur Facebook
    • Partager sur Twitter
      19 août 2019 à 16:50:57

      @digammaF  merci beaucoup! je vais retravailler ce code!!
      • Partager sur Facebook
      • Partager sur Twitter
        20 août 2019 à 12:34:13

        Bonjour a tous,

        je suis bloqué sur l'exercice du labyrinthe, plus précisément sur les portes que doit passer le robot.

        Voila mon problème, lorsque mon robot quitte l'emplacement de la porte, je n'arrive pas a faire réapparaitre la porte derrière lui, mon point ne s' affiche pas.

        voici mon code:

        while labyrinthe[absc][ordo] != "U":
            cmd = input ("entrez une direction \n")
        
            mouv = False                                           
            past_absc = absc                                          
            past_ordo = ordo       
            coo_point = []
           
            if len(coo_point) > 0:
                    labyrinthe[coo_point[0]] [coo_point[1]] = "."
                    coo_point = [] 
                                            
        
            if cmd == 'n': # NORD (support test pour autre commande)  
                absc -= 1  
                if labyrinthe[absc][ordo] == '.':
                    coo_point.append(absc)
                    coo_point.append(ordo)
                    print (coo_point)                  
                    labyrinthe[absc][ordo] = 'X'
                    if len(coo_point) == 0:
                        labyrinthe[past_absc][past_ordo] = " " 


        et après sa boucle pour revenir a mon while...

        je ne vous ai affiché que la commande "n" et que dans le cas d'un point car elle me sert de test pour les autres commandes. j'ai opté pour la création d'une liste qui sacrémente lors de la présence d'un "." dans le labyrinthe et  alimente des coordonnées pour affiché le "." si la liste de ces coordonnées est sup a 0. je sais que ma liste coo_point est alimenté puisque j'ai ajouté une ligne print a son sujet et les append fonctionne bien mais mon point ne réapparait pas --' ...

        d’après vous, ou est ce que je me plante, qu'est ce que je rate ?

        Merci d'avoir pris le temps de me lire et encore plus de merci si vous avez une solution a me proposer ^^

        • Partager sur Facebook
        • Partager sur Twitter
          20 août 2019 à 13:59:27

          Bonjour, 

          Je ne sais pas si c'est ça, mais méfies-toi, ligne 7 tu remets ta liste coo_point à 0.

          Je ne sais pas si c'est ça qui t'embête, mais ça ne m'étonnerait pas.

          Ton coo_point, tu la remet à 0 quand tu as "mis" ton point. Non ?

          • Partager sur Facebook
          • Partager sur Twitter
            20 août 2019 à 14:54:10

            merci Thia pour ton retour,

            j'ai trouver, le pb vient de plus bas dans mon prog...

            coo_point = []
            while labyrinthe[absc][ordo] != "U":
                cmd = input ("entrez une direction \n")
            #try:
            #    cmd = ["n", "s", "o", "e"]#raise:
            #raise :
            #    print("N-S-E ou O, rien d'autre")
                mouv = False                                            
                past_absc = absc                                           
                past_ordo = ordo        
                
                if len(coo_point) > 0:
                        labyrinthe[coo_point[0]] [coo_point[1]] = "."
                        coo_point = []  
                                                 
            
                if cmd == 'n': # NORD (support test pour autre commande)   
                    absc -= 1   
                    if labyrinthe[absc][ordo] == '.':
                        coo_point.append(absc)
                        coo_point.append(ordo)
                        print (coo_point)                   
                        labyrinthe[absc][ordo] = 'X'
                        if len(coo_point) == 0:
                            labyrinthe[past_absc][past_ordo] = " " 
            
                         
                    
                        
                    if labyrinthe[absc][ordo] == 'U':
                        print ("Vous avez gagnez !") 
                        break
                   
                                                                               
                    if labyrinthe[absc][ordo] != 'O':                                                       
                        labyrinthe[absc][ordo] = 'X'   
                        labyrinthe[past_absc][past_ordo] = " "               
                    else:
                        labyrinthe[absc][ordo] == 'O'


            j'ai la ligne :

            if labyrinthe[absc][ordo] != 'O':                   
                        labyrinthe[absc][ordo] = 'X'   
                        labyrinthe[past_absc][past_ordo] = " " 

            qui me remet a zero.

            merci pour ton retour encore une fois !

            • Partager sur Facebook
            • Partager sur Twitter
              20 août 2019 à 20:50:28

              Bonjour,

              J'ai 16 ans et je suis actuellement entrain de m'initier au beau langage qu'est Python.

              Je profite de votre attention pour savoir quelles sont les différences entre la version Python 3 et le Python d'aujourd'hui?

              Et aussi, pourquoi faire de nouvelles versions de Python continuellement?

              Et enfin,je bloque à un exercice dont l'énoncé est:

                                   "Importez le module tortue pour pouvoir effectuer des dessins simples.

                                    Vous allez dessiner une série de triangles équilatéraux de différentes couleurs.

                                    Pour ce faire, définissez d'abord une fonction triangle() capable de dessiner un triangle d'une couleur bien déterminée

                                    (ce qui signifie donc que la définition de votre fonction doit comporter un paramètre pour recevoir le nom de cette couleur).

                                   Utilisez ensuite cette fonction pour reproduire ce même triangle en différents endroits, en changeant de couleur à chaque fois."

              Pour l'instant je n'ai fais que cette partie (comportant sûrement des fautes):

              from turtle import *
              def triangle(color):
              	a=1
              	while a<2:		
              		forward(200)
              		left(120)
              		forward(200)
              		right(-120)
              		forward(200)
              		a=a+1
              triangle(red)

              Je n'arrive pas à déterminé une couleur et encore moins reproduire ce triangle en changeant de couleurs.

              Je remercie beaucoup la personne qui répondra à mes nombreuses questions, parfois chiantes :).

                                                                                                                                                                                                                                                                                      Bonne soirée (j'ai pourtant dit bonjour)!

              -
              Edité par LeParesseuxActif 20 août 2019 à 23:51:37

              • Partager sur Facebook
              • Partager sur Twitter
                21 août 2019 à 9:53:59

                Bonjour. Python évolue au fur et à mesure, par exemple au début, print était un mot clé ! En python 2.7: print "Hello world!". Et puis pour le transformer en fonction et supprimer le mot clé, au lieu de faire la modification sur place et de casser 90% des programmes python, une nouvelle version à été créée pour maintenir les anciens projets en vie tout en pouvant passer à Python 3 pour les nouveaux projets. Il en va de même pour tous les changements apportés.

                Pour ce qui est des différences entre Python 3 et Python 3.7 (ou 3.8 actuellement), il y a notemment l'ajout des mots clés destinés à faire des routines ascinchrones et l'ordonnance des dictionnaires. Tu peux avoir plus d'informations en allant sur le site de Python, rubrique changelogs.

                • Partager sur Facebook
                • Partager sur Twitter

                typage structurel ftw

                  21 août 2019 à 13:24:38

                  Pour ton triangle, si tu ne fais rien avec ta variable color elle ne sera jamais prise en compte. Il faut utiliser la commande de turtle qui permet de changer la couleur du pinceau, et lui passer comme argument la variable color.

                  Pour le tracé du triangle

                  • soit tu codes explicitement tout ce qu'il faut tracer, en écrivant des commandes forward/left/forward/left/forward,
                  • soit tu fais une boucle qui se répète 3 fois, et le contenu de la boucle sert à tracer un seul côté (avec forward/left).

                  Dans ton code actuel, tu mélanges les deux. Tu fais une boucle (qui en fait ne s'exécute qu'une fois !) dans laquelle tu traces les  côtés du triangle.
                  À toi de choisir comment tu veux t'y prendre ; ensuite on t'aidera un peu plus à le faire.

                  Pour les versions de Python : Python 3 est la version actuelle, même si c'est en fait une succession de versions comportant de légères améliorations : 3.7, 3.8, etc. En revanche elle est assez différente de Python 2, ce qui fait que la plupart des programmes écrits avec Python 2 ont besoin d'être partiellement réécrits pour fonctionner sous Python 3.
                  Concrètement, ça oblige encore souvent à avoir deux versions de Python sur chaque ordi, jusqu'au jour où les programmes écrits en Python 2 auront disparu comme les dinosaures.

                  Pourquoi ça change ? Pour la même raison qui fait que ton système d'exploitation te réclame d'installer des mises à jour en permanence : parce que tout change, tout le temps, surtout en informatique. On n'arrête pas le progrès, que ce soit pour s'améliorer, pour se corriger ou pour se protéger. Et même si ça t'embête de changer quelque chose qui marchait bien, tu es obligé de suivre le mouvement pour ne pas te retrouver comme les utilisateurs de Python 2 qui ne peuvent plus refourguer leurs programmes à leurs copains, parce que ceux-ci ont Python 3. CQFD.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 août 2019 à 16:16:48

                    Bonjour,

                    j'ai téléchargé Notepad++ afin d'enregistrer mes programmes sous format py.

                    ma barre d'outil s'arrête à l'icône enregistrer grisée, je n'ai pas les 4 flèches à la suite comme dans l'exemple, après avoir cliquer sur enregistrer-sous

                    la liste déroulante me propose le format Python file (.py ; .pyw) : en enregristrant mon fichier est tout blanc, pas de logo de l'application python; en faisant clic droit pas de proposition d'exécuter le programme avec IDLE. 

                    Je me retrouve bloquer au chapitre 4 du cours Apprenez à programmer en Python à cause de ce problème, pourriez-vous m'aider? Pour info, j'ai installer Python 3.7.4.

                    Je vous remercie.

                    -
                    Edité par stevengobami 22 août 2019 à 16:57:23

                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 août 2019 à 17:12:04

                      Enoncé de l'exercice:

                      "Complétez le module de fonctions graphiques dessins_tortue.py décrit à la page 71. Commencez par ajouter un paramètre angle à la fonction carre(), de manière à ce que les carrés puissent être tracés dans différentes orientations. Définissez ensuite une fonction triangle(taille, couleur, angle) capable de dessiner un triangle équilatéral d’une taille, d’une couleur et d’une orientation bien déterminées. Testez votre module à l’aide d’un programme qui fera appel à ces fonctions à plusieurs reprises, avec des arguments variés pour dessiner une série de carrés et de triangles."

                      Et j'ai fait cela:

                      from  carre import *
                      from triangle import *
                      up()
                      goto(-100,30)
                      
                      a=0
                      b,c=25,50
                      while a<10:
                      	forward(c)
                      	down()
                      	carre(b,'red',90)
                      	up()
                      	forward(c)
                      
                      	down()
                      	triangle(b,'blue',0)
                      	up()    
                      	
                      
                      	
                      	a=a+1
                      	b=b+25
                      	c=c+25
                      a=input()



                      -
                      Edité par LeParesseuxActif 22 août 2019 à 17:31:55

                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 août 2019 à 17:52:13

                        stevengobami a écrit:

                        la liste déroulante me propose le format Python file (.py ; .pyw) : en enregristrant mon fichier est tout blanc, pas de logo de l'application python; en faisant clic droit pas de proposition d'exécuter le programme avec IDLE.

                        C'est que Windows ne reconnaît pas l'extension .py. Et s'il ne te propose pas Idle, c'est que celui-ci n'est pas installé.
                        Et avec le clic droit, il ne te propose pas non plus de l'exécuter avec l'interpréteur Python ?

                        LeParesseuxActif a écrit:

                        Enoncé de l'exercice:...

                        Et j'ai fait cela:...

                        Je t'ai fait des remarques asses précises sur ta fonction triangle(). Ca t'a aidé ou pas ? Tu as choisi laquelle des deux approches ?

                        En regardant le reste de ton code je n'ai pas grand chose à dire, parce que ce n'est pas la partie la plus intéressante.
                        Mais je pense que tu n'as pas compris ce que tu fais avec tes variables.
                        N'utilise pas la variable a pour des choses très différentes : au début tu l'utilises comme un compteur, et à la fin comme le résultat de input(). Quel rapport entre les deux ?
                        La variable c est censée contenir quoi ? Là c'est un nombre qui grandit jusqu'à devenir gigantesque ; et à chaque boucle tu appelles deux fois forward(c), ce qui le fait monter de plus en plus haut, avec des intervalles de plus en plus grands entre les figures. C'est bien ça que tu voulais faire ?!

                        -
                        Edité par Zachee54 22 août 2019 à 17:52:35

                        • Partager sur Facebook
                        • Partager sur Twitter
                          22 août 2019 à 18:42:48

                          En regardant le reste de ton code je n'ai pas grand chose à dire, parce que ce n'est pas la partie la plus intéressante.
                          Mais je pense que tu n'as pas compris ce que tu fais avec tes variables.
                          N'utilise pas la variable a pour des choses très différentes : au début tu l'utilises comme un compteur, et à la fin comme le résultat de input(). Quel rapport entre les deux ?
                          La variable c est censée contenir quoi ? Là c'est un nombre qui grandit jusqu'à devenir gigantesque ; et à chaque boucle tu appelles deux fois forward(c), ce qui le fait monter de plus en plus haut, avec des intervalles de plus en plus grands entre les figures. C'est bien ça que tu voulais faire ?!

                          -
                          Edité par Zachee54 il y a environ 1 heure

                          C'est exctament ça :). Du coup je dois créer une autre variable pour "input"? Mais en quoi cela change t-il? 

                          Et pour le triangle j'ai fait cela:

                          from turtle import *
                          def triangle(taille,couleur,angle):
                          	"Fonction qui renvoie des tringles"
                          	a=0
                          	color(couleur)
                          	right(angle)
                          	while a<3:
                          		forward(taille)
                          		right(120)
                          		a=a+1
                          	left(angle)

                          J'ai aussi rajouté un paramètre pour choisir l'orientation du triangle... mais comment le reproduire en différents endroits aléatoires tout en changeant de couleur?




                          -
                          Edité par LeParesseuxActif 22 août 2019 à 18:48:32

                          • Partager sur Facebook
                          • Partager sur Twitter
                            22 août 2019 à 21:41:58

                            Ah ouais, comparé à ce que tu avais montré avant, ça c'est un code que j'aime beaucoup plus !

                            Je crois que tu es prêt pour l'étape suivante : comment répéter une boucle un certain nombre de fois sans devoir gérer un compteur ?

                            for _ in range(3):
                              ...

                            En principe il devrait y avoir un nom de variable à la place de l'underscore, mais comme on ne s'en sert pas dans la boucle on met un underscore, ça évite d'inventer un nom de variable qui, si ça se trouve, pourrait être utilisé ailleurs.

                            LeParesseuxActif a écrit:

                            C'est exctament ça :). Du coup je dois créer une autre variable pour "input"? Mais en quoi cela change t-il? 

                            Pour Python, ça ne change rien. Enfin, pas dans cet exemple précis.

                            Pour la personne qui te lit, c'est très précieux parce que ça lui donne une chance de comprendre ce que tu as voulu faire avec \(a\). Si tu pouvais lui donner un petit nom plus parlant, ce serait encore mieux ; par exemple "saisie" ?

                            Pour toi, ça t'évitera de t'emmêler les pinceaux le jour où tu auras oublié dans quelle partie \(a\) sert à quoi.

                            LeParesseuxActif a écrit:

                            J'ai aussi rajouté un paramètre pour choisir l'orientation du triangle... mais comment le reproduire en différents endroits aléatoires tout en changeant de couleur?

                            C'est une question intéressante, mais dans ton énoncé il n'est pas écrit que ça doit être aléatoire.
                            Pour l'instant, contente-toi de ce qui est demandé : tu choisis quelques couleurs, tu dessines des figures, et entre chaque tu changes la couleur et tu déplaces le curseur un peu plus loin. Pourquoi pas dans des directions différentes, mais peu importe c'est toi qui choisis.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              23 août 2019 à 22:37:12

                              Zachee54 a écrit:

                              C'est une question intéressante, mais dans ton énoncé il n'est pas écrit que ça doit être aléatoire.Pour l'instant, contente-toi de ce qui est demandé : tu choisis quelques couleurs, tu dessines des figures, et entre chaque tu changes la couleur et tu déplaces le curseur un peu plus loin. Pourquoi pas dans des directions différentes, mais peu importe c'est toi qui choisis.

                              Ok c'est noté! Je vous enverrai le code une fois fini.

                              Merci encore énormément pour votre aide (si précieuse à mes yeux), sans vous cela faire déjà un bout de temps que j'aurai abandonné :).

                              • Partager sur Facebook
                              • Partager sur Twitter
                                1 septembre 2019 à 23:22:02

                                Hello , j'ai un souci et le cerveau n' arrive pas à comprendre haha je suis sur l'exo du labyrinthe je veux me créer une matrice, mais lors de l’update. Il update tout le dictionnaire avec ma liste. Je ne comprends pas pourquoi Python réagit comme ça. 

                                    def affichermap(self):
                                        i=0;
                                        listA=[]
                                        choix=int(input("Quel map veux tu jouer ?"))
                                        if (choix == 1):
                                            mon_fichier = open("cartes/facile.txt", "r")
                                            contenu = mon_fichier.read()
                                            for element in range(0, len(contenu)):
                                                if (contenu[element] != '\n'):
                                                    listA.append(contenu[element])
                                                else :
                                                    self.mapcarte.update({i:listA})
                                                    listA[:]=[]
                                                    i=i+1      
                                             
                                        elif(choix==2):
                                            mon_fichier = open("cartes\prison.txt", "r")
                                            contenu = mon_fichier.read()
                                            for element in range(0, len(contenu)):
                                                if (contenu[element] != '\n'):
                                                    listA.append(contenu[element])
                                                else:
                                                    self.mapcarte.update({i:listA})
                                                    listA[:]=[]
                                                    i=i+1
                                        mon_fichier=mon_fichier.close()
                                        print(self.mapcarte)
                                      
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  2 septembre 2019 à 13:44:06

                                  Du début à la fin de la fonction, à chaque fois que tu modifies ta liste ou que tu l'ajoutes au dictionnaire, c'est toujours la même liste.

                                  Donc quand tu retournes la lire dans le dictionnaire, tu y retrouves tous les changements que tu y as fait entre-temps.

                                  La solution est de créer une nouvelle liste plutôt que de vider l'ancienne :

                                  listA = []
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    8 septembre 2019 à 15:26:04

                                    bonjour, 

                                    Je commence le cours sur Python est voilà que je suis déjà bloqué avec la commande else qui ne passe pas.

                                    je suis sous python 3.7.4.

                                    En écrivant l'exercice sur les fonctions "if" et"else" , j'ai systématiquement la réponse:

                                    "SyntaxError: unindent does not match any outer indentation level"

                                    J'ai bien remarqué que les trois petits points devant les indentation ne sont plus valable, mais comment faire marcher cette commande?

                                    merci pour votre aide.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      8 septembre 2019 à 17:01:13

                                      Bonjour LMoiroud,

                                      En Python il est indispensable d'indenter (avec la touche tab ou avec les espaces) son code, sinon tu auras systématiquement des erreurs.

                                      Exemple:

                                      if age >18:

                                          print 'tu es majeur'

                                      else:

                                          print 'tu es mineur'

                                      envoie une copie d'écran de ton code si tu as encore besoin d'aide. 

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        17 septembre 2019 à 15:08:25 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


                                          19 septembre 2019 à 17:26:54

                                          Bonsoir, je ne comprends pas cet exercice :

                                          a) Écrire une fonction qui détermine le chiffre des unités d'un nombre entier positif

                                          b) En utilisant la fonction précédente, écrire un programme qui vérifie si un nombre est divisible par 10, 5 et par 2

                                          Merci.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            19 septembre 2019 à 18:08:11

                                            Comment écrire cette fonction en python
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              19 septembre 2019 à 19:53:45

                                              Ben si, tu dois bien savoir quelque chose, montre au moins le cheminement de ta pensée.

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                19 septembre 2019 à 20:04:57

                                                En gros, pour moi, si le nombre choisi est > 9 alors print le dernier chiffre 

                                                sinon, print(nombre de départ)

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  19 septembre 2019 à 20:49:42

                                                  prends un exemple: quelles opérations ferais-tu pour passer de 27 à 7?
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    19 septembre 2019 à 20:51:02

                                                    une soustraction mais comment je peux faire en sorte que ça enlève le bon nombre pour arriver au chiffre des unités
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      19 septembre 2019 à 22:30:25

                                                      Est-ce que tu as vu quelles opérations arithmétiques étaient possibles en Python ?

                                                      Mais restons sur l'idée de la soustraction, tu n'as aucun moyen de connaître le nombre que tu voudrais soustraire ? Quelle est l'opération que tu voudrais réaliser, au final ?

                                                      (on en est à 10 messages, ça aurait quand même nécessité un sujet dédié)

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        20 septembre 2019 à 9:06:57

                                                        Prends plusieurs exemples: 27 pour aller à 7 que dois-je enlever? 35 pour arriver à 5 que dois je enlever? etc. etc. quel est le point commun entre ces nombres?
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        Exercices du cours Python / postez ici !

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