A voir également:
- Probleme affichage - Boucle for et condition
- Excel cellule couleur si condition texte - Guide
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Affichage double ecran - Guide
- Condition et excel - Guide
- Windows 11 affichage classique - Guide
2 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
Modifié le 26 avril 2018 à 22:00
Modifié le 26 avril 2018 à 22:00
Bonjour,
Je ne connais pas bien les nuances de Python, mais j'aurais quelques remarques :
1 - Tu définis une variable laby et une variable laby2 en dehors de ta fonction. Je suppose qu'elles ont donc une portée globale. Mais tu donnes le nom "laby" au labyrinthe passé en argument de ta fonction. Que tu appelles avec l'argument laby2, qui sera donc à la fois le laby et le laby2 à l'intérieur de la fonction !! Franchement on ne comprend plus rien et on ne sait pas quel objet est lu, écrit, etc...
C'est une très mauvaise pratique.
Si ta fonction agit sur les objets globaux, elle n'a pas besoin de paramètre. Sinon, nomme-les différemment.
2 - Dans ta collection de elif, tu utilises allègrement des [i-1], [i+1] sans vérifier si ces indices sont bien définis dans le tableau.
3 - Ton premier test porte sur laby[i][j] == 0. Du coup, en admettant que les seuls valeurs possibles soient 0 et 1, dans tous les elif suivant laby[i][j] == 1 est VRAI. Tu peux donc simplifier et ne pas l'écrire. De même, le tout dernier test sera toujours FAUX.
Xavier
Je ne connais pas bien les nuances de Python, mais j'aurais quelques remarques :
1 - Tu définis une variable laby et une variable laby2 en dehors de ta fonction. Je suppose qu'elles ont donc une portée globale. Mais tu donnes le nom "laby" au labyrinthe passé en argument de ta fonction. Que tu appelles avec l'argument laby2, qui sera donc à la fois le laby et le laby2 à l'intérieur de la fonction !! Franchement on ne comprend plus rien et on ne sait pas quel objet est lu, écrit, etc...
C'est une très mauvaise pratique.
Si ta fonction agit sur les objets globaux, elle n'a pas besoin de paramètre. Sinon, nomme-les différemment.
2 - Dans ta collection de elif, tu utilises allègrement des [i-1], [i+1] sans vérifier si ces indices sont bien définis dans le tableau.
3 - Ton premier test porte sur laby[i][j] == 0. Du coup, en admettant que les seuls valeurs possibles soient 0 et 1, dans tous les elif suivant laby[i][j] == 1 est VRAI. Tu peux donc simplifier et ne pas l'écrire. De même, le tout dernier test sera toujours FAUX.
Xavier
Bonjour.
Je me dis que c'est peut etre parceque j'ai initialisé le tableau laby à 0 pour toutes les cases, ce qui fausse les résultats?
Comment veux-tu générer un labyrinthe si toutes les pièces et cloisons sont à 0 ?
Cela n'a aucun sens !
Tu devrais donc partir de l'exemple fournit sur la page de ton exercice.
Evite tous ces prints dans ta fonction et utilise str.join sur ta liste en fin de ta fonction.
Pour décomposer le travail, je te conseille de séparer la création des tuiles et cloisons verticales (lignes impaires), et la création des passages et cloisons horizontales (lignes paires) en 2 boucles distinctes.
Et pour faire cela il faut se servir du 3ème paramètre de range qui définit le step.
Je me dis que c'est peut etre parceque j'ai initialisé le tableau laby à 0 pour toutes les cases, ce qui fausse les résultats?
Comment veux-tu générer un labyrinthe si toutes les pièces et cloisons sont à 0 ?
Cela n'a aucun sens !
Tu devrais donc partir de l'exemple fournit sur la page de ton exercice.
tableau = ( '11111111111', '10001000001', '11101011101', '10100000101', '10111110111', '10000000001', '11111011111', )
Evite tous ces prints dans ta fonction et utilise str.join sur ta liste en fin de ta fonction.
Pour décomposer le travail, je te conseille de séparer la création des tuiles et cloisons verticales (lignes impaires), et la création des passages et cloisons horizontales (lignes paires) en 2 boucles distinctes.
Et pour faire cela il faut se servir du 3ème paramètre de range qui définit le step.
26 avril 2018 à 22:44
En fait la matrice laby est supposée etre la matrice lue (en bits), et laby 2 le résultat.. Je viens d'essayer de deplacer la ligne qui déclare laby 2 juste avant la boucle et ca m'a fait un msg d'erreur
26 avril 2018 à 22:44
26 avril 2018 à 22:48
Modifié le 27 avril 2018 à 14:18
Il faut aussi, comme je l'ai dit dans le point 2, faire attention aux i+1 et i-1. Ton tableau laby (valeurs dans le code que je donne) va de 0 à 4. Que se passe-t-il si tu demandes l'accès à laby[i-1] quand i vaut 0 ? laby[-1] n'est pas défini... Je ne connais pas Python mais dans la grande majorité des langages, cela causera une erreur. En général on vérifie que laby[i-1] existe, ou que i est supérieur à 0. Pareil pour laby[i+1] quand i vaut le maximum, 4. Et pareil avec j, entre 0 et 2...
Xavier