IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

,p,qp,q


Sujet :

Python

  1. #1
    Invité
    Invité(e)
    Par défaut ,p,qp,q
    q,q
    Dernière modification par Invité ; 21/01/2019 à 05h19.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par Finstor Voir le message
    Je suis maintenant censé compter le nombre de voisins pour les côtés, je n'y arrive pas
    Si vous parlez de la fonction "Compter", s'il n'y a pas de "return n", çà ne va pas marcher.
    Puis... pas facile de faire la différence entre L, C et l, c...
    Essayez de prendre l'habitude de donner des noms plus significatifs genre LIGNES, COLONNES pour les dimensions de votre Grille et i, j pour les indices arguments de Compter: lorsque le code ne fonctionne pas, le rendre plus facile à relire vous permettrait de trouver plus facilement l'erreur.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Invité
    Invité(e)
    Par défaut
    J'ai modifié les noms pour mieux m'orienter 😀
    Merci du conseil, le pire c'est qu'on utilisait des noms de la sorte mais notre professeur nous a fait changer les noms 😭

    Pour compter les cellules voisines pour les côtés, comment suis-je censé m'y prendre ?
    J'ai pensé à utiliser "While" mais je bloque vraiment...
    Merci beaucoup d'avance pour ta réponse et désolé pour les fautes à 6 heures, je suis confronté à ma situation actuelle depuis hier soir et je commençais à fatiguer.

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Finstor Voir le message
    Merci du conseil, le pire c'est qu'on utilisait des noms de la sorte mais notre professeur nous a fait changer les noms 😭
    Ben le souci, c'est qu'un nom long comme "colonne" devient vite chiant, mais un nom court comme "c" devient vite ensuite incompréhensible (noyé au milieu de "i", "l", o", etc...)
    Généralement un consensus veut que les trucs un peu pérenne (nb de lignes, nb de colonnes, etc) portent un nom court mais significatif (ex "col" ou "nbCol" ou "nb_col" selon tes goûts) et les trucs vraiment volatiles (indices de boucles, valeurs d'un dico surtout) portent un nom très court comme "i" pour "indice", "k" pour "key" et "v" pour "values".

    Citation Envoyé par Finstor Voir le message
    Pour compter les cellules voisines pour les côtés, comment suis-je censé m'y prendre ?
    Si tu pars de la cellule aux coordonnées "x, y", suffit de deux boucles imbriquées
    • la première avec i variant de x-1 à x+1
    • la seconde avec j variant de y-1 à y+1

    et tu comptes cellule[i][j] avec un test pour ne pas compter ta propre cellule (donc quand i=x et j=y) et d'autres tests pour ne pas dépasser les bords et voilà.

    Citation Envoyé par Finstor Voir le message
    J'ai pensé à utiliser "While" mais je bloque vraiment...
    Oui, ça arrive. Moi je veux visser un meuble. J'ai pensé à utiliser une scie sauteuse mais je bloque vraiment aussi.

    On n'utilise pas des outils au hasard. On sait ce qu'on veut faire, on sait comment le faire, on prend ensuite des outils adaptés au travail. while peut le faire mais une boucle "for" sera plus adéquate (for i in range (x-1, x+1+1)). Et connaitre la façon d'utiliser les susdits outils est un plus non négligeable (ex "pourquoi j'écris +1 en final ?")
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Invité
    Invité(e)
    Par défaut
    Rebonjour, c'est encore moi !
    Voilà, maintenant, un nouveau problème se pose
    Spyder m'indique : " local variable cellules is assigned to but never used" à la ligne 41. Le problème dans l'histoire, c'est qu'avant de changer ma variable n en cellules, le programme s’exécutait normalement. De plus, Spyder m'indique peu importe ce que je donne comme nom à la variable n.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    from random import randint
    nb_col=int(input("Combien voulez-vous de colonnes ?"))
    nb_lig=int(input("Combien voulez-vous de lignes ?"))
     
     
    def maGrille(nb_lig,nb_col):
        maGrille=[]
        for i in range(nb_lig):
            grille=[]
            for j in range(nb_col):
                grille=grille+[randint(0,1)]
            maGrille=maGrille+[grille]
        return maGrille
     
    maGrille(nb_col,nb_lig)
     
     
    def affiche(grille):
        cellules=len(grille)
        for i in range(cellules):
            print(grille[i])
     
    affiche(maGrille)
     
    #Pour les angles :
     
    def Compter(grille,lignes,colonnes):
        if lignes==0 and colonnes==0:
            cellules=grille[1][0]+grille[1][1]+grille[0][1]
        if lignes==0 and nb_col-1==colonnes:
            cellules=grille[0][colonnes-2]+grille[1][colonnes-2]+grille[1][colonnes-1]
        if lignes==nb_lig-1 and nb_col==0:
            cellules=grille[nb_lig-2][0]+grille[nb_lig-2][1]+grille[nb_lig-1][1]
        if lignes==nb_lig-1 and nb_col-1==nb_col:
            cellules=grille[nb_lig-1][nb_col-2]+grille[nb_lig-2][nb_col-2]+grille[nb_lig-2][nb_col-1]

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Finstor Voir le message
    Pour compter les cellules voisines pour les côtés, comment suis-je censé m'y prendre ?
    On part de (i, j).

    Pour tester si c'est un "coin", il faut que i ET j soient égaux à deux valeurs bien précises. Pour tester si c'est un "bord", il faut que i soit égal à 0 (ou à COLONNES) - peu importe j... (tant que ce n'est pas une des valeurs qui donnent un "coin").
    La difficulté va être d'utiliser "if" suivi d'une cascade de "elif"... mais c'est très formateur

    Après on peut sortir de la programmation et penser "algorithme" et le problème se ramène à trouver les index des cases voisines d'une case (i, j) d'un tableau MxN.
    Dans le cas général, pour avoir cette liste d'index on peut commencer par faire une double boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for dx in (-1, 0, 1):
         for dy in (-1, 0, 1):
              if dx == 0 and dy == 0:
                     continue
              print (i + dx, j + dy)
    Puis traduire "coin" et "bord" en restreignant la plage de valeurs prises par dx et dy. Donc remplacer (-1, 0, 1) par des variables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for dx in DX_RANGE:
         for dy in DY_RANGE:
              if dx == 0 and dy == 0:
                     continue
              print (i + dx, j + dy)
    Ce qui fait qu'on n'a plus qu'a assigner (0, 1) à DX_RANGE si i vaut 0, (-1, 0) s'il vaut M ou (-1, 0, 1) sinon. Pareil pour DY_RANGE. Ce qui fait beaucoup moins de conditions à tester.

    On peut aussi ajouter un bord au tableau i.e. on plonge le tableau MxN dans un tableau plus grand M+2 x N+2. Les lignes 0 et N+1 et les colonnes 0 et M+1 sont remplies avec des valeurs qui vont bien (ici 0) et on interdit à l'utilisateur d'y accéder.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Invité
    Invité(e)
    Par défaut
    Merci pour l'aide wiztricks mais je ne sais pas pourquoi Spyder m'indique un message d'erreur pour la variable "cellules" alors qu'avant, c'était la variable n et mon programme s'exécutait correctement

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Finstor Voir le message
    Merci pour l'aide wiztricks mais je ne sais pas pourquoi Spyder m'indique un message d'erreur pour la variable "cellules" alors qu'avant, c'était la variable n et mon programme s'exécutait correctement
    Je vous ai déjà dit qu'il n'y avait pas de return dans votre fonction!
    Après pourquoi Spyder râle lorsque votre variable à plus d'un caractère? C'est une question "Spyder" qui ne change pas grand chose côté "Python": pas de "return".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Invité
    Invité(e)
    Par défaut
    Je vais paraître pour un gros débile mais je n'y arrive pas... Est-ce qu'une personne pourrait me faire la partie de compter le nombre de cellules pour chaque voisins s'il vous plaît
    J'ai essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    x=l
    y=c
    for i in (x-1, x, x+1):
         for j in (y-1, y, y+1):
             Compter(i,j)
             if i!= 0 and j!= 0:
                     continue
    Mais, ça ne marche pas Merci d'avance à la personne qui m'aidera
    Dernière modification par Invité ; 19/01/2019 à 10h22.

  10. #10
    Invité
    Invité(e)
    Par défaut Je suis désespéré...
    Rebonjour tout le monde, je suis désespéré...
    Comme je vous l'ai dit hier, mon professeur m'a réellement mal appris à coder mais aussi à toutes les personnes de ma classe.
    Je pense surtout qu'il n'a pas réussi à se mettre à notre place lorsqu'il nous apprenait les bases de Python et donc je suis vraiment perdu pour mon programme du jeu de la vie malgré tout les conseils que vous m'avez fournis.
    C'est simplement à une autre portée actuellement pour compter le nombre de cellules pour les bords.
    Donc est-ce que vous pouvez me fournir la démarche à suivre (en utilisant mes noms de variables).
    Je sais que je parais bête à travers mes messages mais vraiment, je suis bloqué dessus depuis Lundi dernier et mon professeur m'a simplement dit de mettre 4 if et je n'ai pas compris. Sauf que les autres élèves l'ont utilisé pour faire leur programme (oui oui c'est de la triche).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    from random import randint
    nbCol=int(input("Combien voulez-vous de colonnes ?"))
    nbLig=int(input("Combien voulez-vous de lignes ?"))
     
     
    def maGrille(nbLig,nbCol):
    Grille=[]
    for i in range(nbLig):
    grille=[]
    for j in range(nbCol):
    grille=grille+[randint(0,1)]
    Grille=Grille+[grille]
    return Grille
     
    Grille=maGrille(nbLig,nbCol)
     
     
    def affiche(grille):
    n=len(grille)
    for i in range(n):
    print(grille[i])
     
    affiche(Grille)
     
    #angles
     
    def Compter(grille,X,Y):
    if X==0 and Y==0:
    c=grille[1][0]+grille[1][1]+grille[0][1]
    if X==0 and nbCol-1==Y:
    c=grille[0][Y-2]+grille[1][Y-2]+grille[1][Y-1]
    if X==nbLig-1 and nbCol==0:
    c=grille[nbLig-2][0]+grille[nbLig-2][1]+grille[nbLig-1][1]
    if X==nbLig-1 and nbCol-1==Y:
    c=grille[nbLig-1][nbCol-2]+grille[nbLig-2][nbCol-2]+grille[nbLig-2][nbCol-1]
    return c
    Dernière modification par Invité ; 19/01/2019 à 11h30.

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Finstor Voir le message
    Comme je vous l'ai dit hier, mon professeur m'a réellement mal appris à coder mais aussi à toutes les personnes de ma classe.
    Je pense surtout qu'il n'a pas réussi à se mettre à notre place lorsqu'il nous apprenait les bases de Python et donc je suis vraiment perdu pour mon programme du jeu de la vie malgré tout les conseils que vous m'avez fournis.
    Arrêtez de larmoyer: vous êtes en Terminale bientôt adulte et en âge de voter.
    Déjà un professeur essaie de vous enseigner, et vous vous essayez d'apprendre et si vous trouvez que son enseignement n'est pas assez bien, vous pouvez potasser par vous même en ouvrant un tuto. et en essayant de faire des exercices comme vous le faites pour d'autres matières. Et s'il ne vous a pas semblé utile de forcer un peu sur une matière où vous êtes en difficulté, ben, vous ne savez pas, mais vous en êtes aussi responsable.


    Citation Envoyé par Finstor Voir le message
    C'est simplement à une autre portée actuellement pour compter le nombre de cellules pour les bords.
    Donc est-ce que vous pouvez me fournir la démarche à suivre (en utilisant mes noms de variables).
    On vous a indiqué la démarche à suivre. Après si vous n'avez pas encore le niveau pour faire ce genre d'exo. ben vous savez ce que vous avez à faire pour les vacances de février.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  12. #12
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Finstor Voir le message
    Comme je vous l'ai dit hier, mon professeur m'a réellement mal appris à coder mais aussi à toutes les personnes de ma classe.
    Ouais, c'est la faute du prof. Il a donné des exercices, fait faire des TP, donné la correction mais à aucun moment il ne t'a dit qu'il fallait aussi travailler par toi-même. C'est évidemment inexcusable de sa part !!!

    Citation Envoyé par Finstor Voir le message
    Je pense surtout qu'il n'a pas réussi à se mettre à notre place lorsqu'il nous apprenait les bases de Python et donc je suis vraiment perdu pour mon programme du jeu de la vie malgré tout les conseils que vous m'avez fournis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def maGrille(nbLig,nbCol):
    Grille=[]
    for i in range(nbLig):
    grille=[]
    for j in range(nbCol):
    grille=grille+[randint(0,1)]
    Grille=Grille+[grille]
    return Grille
    Tu ne sais même pas qu'il faut indenter en Python !!!???!!! Et tu penses à quoi quand tu écris Grille=[] puis juste en dessous grille=[] ? C'est quoi pour toi "Grille" et "grille" ? Et même si tu as besoin de deux tableaux, quand tu leur donne des noms aussi cons tu ne te dis pas ensuite "ouh là là ça va pas être facile ensuite de faire la différence" ???

    Citation Envoyé par Finstor Voir le message
    et mon professeur m'a simplement dit de mettre 4 if et je n'ai pas compris.
    Oh ? Il t'a dit de mettre 4 "if" et tu n'as pas compris ??? Pauvre chou !!!
    Je t'ai déjà dit qu'on n'inventait pas les outils. Un programme ce n'est pas une potion magique. On ne met pas des if "au hasard" ou "parce que le prof l'a dit". On commence par réfléchir au problème et à la façon de le solutionner puis on prend les outils adéquats pour coder la solution qu'on a trouvée.
    Si par exemple tu veux vérifier que ta position (i, j) ne dépasse pas le bord gauche, il faut tester si i >= 0 (un premier "if"). Pour le bord haut, faut j >= 0 (un second). Le bord droit faut i < nb_col (le 3°) et le bord bas faut j < nb_lig (le 4°). Enfin c'est une idée vraiment au hasard parce que tu ne dis rien sur le souci que ces "4 if" doivent régler et qu'on peut factoriser certains tests (moi j'arrive à 2 "if"). Accessoirement faut aussi i != x et j != y (sinon c'est qu'on est sur la cellule centrale) donc là aussi un autre "if"...

    Citation Envoyé par Finstor Voir le message
    Sauf que les autres élèves l'ont utilisé pour faire leur programme (oui oui c'est de la triche).
    C'est de la triche que de réfléchir et suivre les conseils du prof ? Et pourquoi toi tu n'as pas "triché" comme eux ?

    Citation Envoyé par Finstor Voir le message
    Est-ce qu'une personne pourrait me faire la partie de compter le nombre de cellules pour chaque voisins s'il vous plaît
    Ca c'est vraiment de la triche !!!

    Citation Envoyé par Finstor Voir le message
    Merci pour l'aide wiztricks
    Ouais, de rien !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Salut, j'ai fais le jeu de la vie à la fac mais en python3 avec anaconda(numpy/scypi)...

    Le code du jeu de la vie est à la fin, avec certaines fonction numpy... tu peux t'en inspirer pour le faire en python

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
        "def jeu_de_la_vie(n):\n",
        "    \n",
        "    grille=np.zeros((50,50))\n",
        "    debut=np.zeros((3,3))\n",
        "    debut[0:3,1]=1\n",
        "    debut[1,2]=1\n",
        "    grille[47:50,47:50]=debut\n",
        "    \n",
        "    filtre=np.zeros((3,3))\n",
        "    filtre[:,:]=1\n",
        "    filtre[1,1]=0\n",
        "    \n",
        "    for i in range(n):\n",
        "\n",
        "        nbr_voisin=sc.signal.convolve2d(grille,filtre,'same')\n",
        "    \n",
        "        egale3=(nbr_voisin==3)\n",
        "\n",
        "        sup3=(nbr_voisin>3)\n",
        "        inf2=(nbr_voisin<2)\n",
        "        \n",
        "        grille[(egale3[:,:]==True)]=1\n",
        "        grille[(sup3[:,:]==True)]=0\n",
        "        grille[(inf2[:,:]==True)]=0\n",
        "        \n",
        "        \n",
        "    return grille\n",
        "    \n",
    Images attachées Images attachées

Discussions similaires

  1. Programmation jeu de la vie Python
    Par Benecile dans le forum Général Python
    Réponses: 12
    Dernier message: 29/05/2015, 07h02
  2. Programmation du jeu de la vie
    Par TiteFleur014 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 24/11/2014, 21h49
  3. programmation jeu de la vie
    Par darkontes dans le forum Caml
    Réponses: 6
    Dernier message: 13/03/2010, 18h20
  4. Programme c jeu de la vie
    Par gaet67 dans le forum C#
    Réponses: 1
    Dernier message: 14/05/2007, 07h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo