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 :
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 !!)
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
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.
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.
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.
"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
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 ?!
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
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.
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é :).
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)
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é)
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?
typage structurel ftw
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique