Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2874 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Python class et méthodologie, une folle histoire de bonbons

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Python class et méthodologie, une folle histoire de bonbons

n°2287825
lolight
Posté le 13-09-2016 à 15:39:10  profilanswer
 

Bonjour,  
 
Pour commencer merci de passe sur ce sujet et de m'accorder votre temps.
Mon niveau est très bas en python, je suis un novice de chez novice en auto formation sur mon temps libre.
Je viens vous voir pour plusieurs choses.
 
La première c'est plutôt pour savoir comment aborder de la manière la plus simple possible un sujet.
 
Je fais un programme ou j'essaye d'apprendre la base de la programmation orienté objet en python et je ne sais pas bien comment traiter tout mes informations.
 
Le contexte est le suivant, mon utilisateur doit me donner un chiffre qui corresponds à un nombre de bonbons.
Un bonbon est une class qui à plusieurs attributs (nom, poids etc.. )
 
Si mon utilisateur entre par exemple le chiffre 10, je vais devoir générer à l'aide de ma class 10 bonbons avec des caractéristiques aléatoire pour certain attributs et fixe pour d'autre, voir un peut des deux. J’imagine que pour faire bien il faut que j'ai un attribut qui soit nominatif par exemple self.name affin de différencier mes 10 bonbons généré.
 
Ma question est la suivante, comment le programme gère tout ça ? Il crée a la suite 10 Objets différents qu'il stocke en RAM ? J’imagine que la première chose à faire est de limiter le nombre maximum d'objet à générer ?  :ange:  
 
Idéalement dans mon programme je vais créer une classe pot. Mes pots auront une contenance fixe traité en tant qu'attribut.  
Ensuite j'aimerais arriver à extraire quel pots à le plus de bonbon bleu ou quel peau à les bonbons les plus gros.
La méthode est-elle la bonne pour réaliser ce type de projet ?   :sweat:  
 
La seconde partie maintenant plus concrète :
J'essaye de créer et test mes attributs un à un dans des fichier à part pour ensuite les intégrer dans le corp de mon programme.
Ne vous inquiétez pas si vous ne voyez ni self.name ni la définition de ma classe bonbon.
Au besoins je peux la poster, j'estime (peut être à tord) qu'elle n'es pas nécessaire.
 
 
Je pense que j'ai plusieurs chose qui ne vont pas. Au delà du fait que ne soit pas sur que ça soit la bonne façon d'identifier chacun de mes bonbon différemment, j'ai ou soucis. Pour une raison que je n'arrive pas à comprendre ma boucle va toujours dans mon Else alors que celons ma compréhension elle devrais y aller seulement la première fois qu'ensuite ma variable namesuffixe est différente de "" non ? Peut être une fois la fonction terminée les variable reprennent leurs valeurs déclarée plus haut ?  
Devrais-je déclarer mes variables dans ma fonction uniquement ? Je suis un peut perdu sur la méthode :/
Je pense qu'ici il me manque une base de compréhension  
 

Code :
  1. #!/usr/bin/python3.5
  2. # coding: utf-8
  3. nbrbonbon=int(10)
  4. name=""
  5. namesuffixe=""
  6. def defname(name, namesuffixe, nbrbonbon):
  7.         if name != "" :
  8.                 print ("If" )
  9.                 return "Le bonbon à déjà été nommée"
  10.         elif namesuffixe !="" :
  11.                 print ("Elif" )
  12.                 name = ("bonbon" )+str(namesuffixe)
  13.                 namesuffixe= namesuffixe-1
  14.                 print (namesuffixe)
  15.                 return name
  16.         else :
  17.                 namesuffixe=nbrbonbon
  18.                 name = ("bonbon" )+str(namesuffixe)
  19.                 namesuffixe=namesuffixe-1
  20.                 print (namesuffixe)
  21.                 print ("Else" )
  22.                 return name
  23. print ("Hello World" )
  24. print ("Le nom du bonbon 1 est :", defname(name, namesuffixe, nbrbonbon)," joli non ?" )
  25. print ("Le nom du bonbon 2 est :", defname(name, namesuffixe, nbrbonbon)," joli non ?" )
  26. print ("Le nom du bonbon 3 est :", defname(name, namesuffixe, nbrbonbon)," joli non ?" )


 
Merci pour votre lecture  :jap:


Message édité par lolight le 13-09-2016 à 15:41:26

---------------
--- Mon topik d'Ach/Ven ---
mood
Publicité
Posté le 13-09-2016 à 15:39:10  profilanswer
 

n°2287858
bistouille
Posté le 13-09-2016 à 19:58:32  profilanswer
 

C'est un problème de variable globale et variable locale
 
Quand tu fais  

Code :
  1. namesuffixe=nbrbonbon
  2. name = ("bonbon" )+str(namesuffixe)


 
Dans ton else, ces deux variables sont locale à ta fonction, il faut que tu utilises global sur tes variables.
 
Mais si tu as commencé en objet, les variables globales sont à proscrire hors cas exceptionnels.
 
Sinon, pour ta préoccupation d'occupation mémoire par tes objets, passe outre, 10 objets c'est que dalle, si encore t'en avait des milliers, là oui faudrait se préoccuper un peu de ça.
 
Sinon python est un langage à typage dynamique, quand tu fais x = 10, inutile de faire int(10) python le fait lui-même.
 
Pour ta comparaison de contenance de pots, python a des méthodes spéciales (commençant par __) qui permettent des opérations sur objets, différences, etc.

Code :
  1. >>> object.__
  2. object.__base__            object.__eq__(             object.__le__(             object.__reduce_ex__(
  3. object.__bases__           object.__flags__           object.__lt__(             object.__repr__(
  4. object.__basicsize__       object.__format__(         object.__module__          object.__setattr__(
  5. object.__call__(           object.__ge__(             object.__mro__             object.__sizeof__(
  6. object.__class__(          object.__getattribute__(   object.__name__            object.__str__(
  7. object.__delattr__(        object.__gt__(             object.__ne__(             object.__subclasscheck__(
  8. object.__dict__            object.__hash__(           object.__new__(            object.__subclasses__(
  9. object.__dictoffset__      object.__init__(           object.__prepare__(        object.__subclasshook__(
  10. object.__dir__(            object.__instancecheck__(  object.__qualname__        object.__text_signature__
  11. object.__doc__             object.__itemsize__        object.__reduce__(         object.__weakrefoffset__
  12. >>> object.__


 
Tu devras donc définir ces méthodes dans tes classes Pots pour les comparaisons, pour faire ce que tu souhaites.
Mais avant de t'attaquer à ça, crée déjà tes classes.
https://docs.python.org/3/reference [...] chcmpfuncs
 


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
n°2287879
lolight
Posté le 14-09-2016 à 00:14:02  profilanswer
 

Salut Bistouille,  
 
Décidément tu m'aide beaucoup, merci :D
 
Bon finalement j'avais pas bien la notion de variable globale et local du coup je suis allé lire un cours à ce sujet pour mieux comprendre.
(Si ça intéresse : https://openclassrooms.com/courses/ [...] eferences)
 
Au final j'ai un peut mieux compris le fonctionnement et j'ai résolus mon problème en passant la variable namesuffixe en global (code ci-dessous).
Le truc c'est qu'à chaque sortie de fonction elle étais détruite donc forcément je bouclais dans le else a chaque appel.  
 
Si non question un peut à part qui surement trouvera réponse et si non tempis je googlerais ça demain pour me faire une idée.
Y'a des IDE aussi sympa que Sublime texte 3 niveau visuel/raccourcis autre que Python Gui officiel ?  
Je m'explique, je fais mes bouts de code sur sublime que j'importe dans Python Gui et une fois sur deux, il m'envois une plâtrées d'erreurs d'indentation et je vous avoue que chercher l'aiguille à chaque fois c'est frustrant, surtout quand j'ai une indentation bien faite à la base sur sublime :/
(Il me semble que j'ai déjà solve ce soucis sur sublime texte 2 en réglant un paramètre mais impossible de me souvenir lequel)
Je teste Eclipse avec le module de python mais ça m'a l'air d'être une bel usine à gaz pour faire simplement du python  :D  
 

Code :
  1. namesuffixe = ""
  2. nbrchallenger = 10
  3. def defname(name):
  4.         global namesuffixe
  5.         if name != "" :
  6.                 return "La fourmis à déjà été nommée"
  7.         elif namesuffixe !="" :
  8.                 name = ("fourmiz" )+str(namesuffixe)
  9.                 namesuffixe= namesuffixe-1
  10.                 return name
  11.         elif namesuffixe !="" and namesuffix <= 0 :
  12.                 return Error
  13.         else :
  14.                 namesuffixe=nbrchallenger
  15.                 name = ("fourmiz" )+str(namesuffixe)
  16.                 namesuffixe=namesuffixe-1
  17.                 return name
  18. print ("Le nom de la fourmis 1 est :", defname(name)," joli non ?" )
  19. print ("Le nom de la fourmis 2 est :", defname(name)," joli non ?" )
  20. print ("Le nom de la fourmis 3 est :", defname(name)," joli non ?" )


Message édité par lolight le 14-09-2016 à 00:45:08

---------------
--- Mon topik d'Ach/Ven ---
n°2287892
bistouille
Posté le 14-09-2016 à 07:07:00  profilanswer
 

Ton code n'est pas très logique :o
 
Si c'est uniquement pour nommer des fourmis avec un préfixe et en limitant 10 fourmis au max, t'as pas besoin de tout ça.
=> return Error => là en l’occurrence c'est python qui va te jeter une erreur :whistle:
Si tu veux que python génère une erreur, faut que tu regardes du côté des exceptions, ou assertion.
 
Quant à ton problème d'indentation, c'est parce que généralement les ide sont configurer pour indenter à 4 espaces (convention python), là tu indentes à 8, donc forcément l'ide prend ça comme une erreur.
Je te conseille de rester à 4, car à plus ça devient illisible, à 4 blocs imbriqués tu vas te retrouver à 32 caractères de décalage, à 6, 48, etc,  c'est trop.
 
Pour ma part, je code plus avec un éditeur simple (pluma sur mate) et un terminal, l'auto complétion des ide est trop dans les choux, et à plus tendance à me gonfler qu'à m'aider, bon je leur en veux pas, avec pleins d"héritage multiples, normal qu'ils ne sachent pas ce que je veux qu'ils affichent, ils sont pas devins.
 
Pour les ide python voir https://wiki.python.org/moin/Integr [...] vironments
J'utilise geany ou spyder, mais rarement comme j'ai précisé.


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
n°2287895
lolight
Posté le 14-09-2016 à 09:06:36  profilanswer
 


Oui d'ailleurs j'ai oublié de précisé je suis passé sur les fourmis, c'est plus cool et j'ai une idée de programme complètement inutile mais plus long à dev donc plus formateur et aussi plus interessant que de simples bonbons.  
 

bistouille a écrit :


Si c'est uniquement pour nommer des fourmis avec un préfixe et en limitant 10 fourmis au max, t'as pas besoin de tout ça.


 
Pour le coup je vais demandé à mon utilisateur avec combien de fourmis il veut jouer, un peut comme comme les bonbons au final et donc c'est variable.
 

bistouille a écrit :


=> return Error => là en l’occurrence c'est python qui va te jeter une erreur :whistle:  
Si tu veux que python génère une erreur, faut que tu regardes du côté des exceptions, ou assertion.


 
Oui aurais-je oublié une paire de guillemet :D
Je vais regarder les exeptions et assertion pour générer mon petit code d'erreur. Bon réèlement j'ai aucune raison d'attérir dans cette exeption mais bon on sais jamais :o
 

bistouille a écrit :


Quant à ton problème d'indentation, c'est parce que généralement les ide sont configurer pour indenter à 4 espaces (convention python), là tu indentes à 8, donc forcément l'ide prend ça comme une erreur.  
Je te conseille de rester à 4, car à plus ça devient illisible, à 4 blocs imbriqués tu vas te retrouver à 32 caractères de décalage, à 6, 48, etc,  c'est trop.


 
Oh god tout semble plus clair !
J'avais l'ipression que quand je passais de sublime à Python Gui mes tabulation fesais le double, alors que par moment elle étais beaucoup plus petite. Tout s'explique !  
Je pestais donc à tord sur Python Gui alors c'est juste une question de paramétrage au final. Je vais creuse de ce côté la.
 

bistouille a écrit :


Pour ma part, je code plus avec un éditeur simple (pluma sur mate) et un terminal, l'auto complétion des ide est trop dans les choux, et à plus tendance à me gonfler qu'à m'aider, bon je leur en veux pas, avec pleins d"héritage multiples, normal qu'ils ne sachent pas ce que je veux qu'ils affichent, ils sont pas devins.  
 
Pour les ide python voir https://wiki.python.org/moin/Integr [...] vironments  
J'utilise geany ou spyder, mais rarement comme j'ai précisé.


 
 
Je regarderais et essayerais pluma il me semble être tombé dessus hier soir (après verification non en fait) ! Ca m'arrive d'utiliser un VIM coloré aussi quand je teste directement sur une VM mes bout de code. Mais je t'avoue que une fois sur deux je prends un WinSCP et j'ouvre mon fichier avec sublime directement sur le serveur. A mon niveau l'auto complétion est plutôt sympa, surtout niveau syntaxe ou j'ai tendence à me planter 1 fois sur 2.  
 
Merci pour avoir une fois de plus éclairé ma lanterne !  
 
Bon je repose mon code un poil modifier, je voulais être sur que tout fonctionnais avant d'incoporer ça à ma classe.
Je testerais ensuite l'ensemble une fois que j'aurais définis chacun des mes self.objet :) !
 
Je reposte le code un peut plus propre (je pensse) j'ai juste rajouté la paire de guillemet oublié et un while pour appeler ma fonction, juste histoire d'essayer d'imager se qui va se passe quand mon programme me génèrera mes fourmis :3
 
Encore merci :)
 

Code :
  1. name = ""
  2. namesuffixe = ""
  3. nbrchallenger = 10
  4. def defname(name):
  5.         global namesuffixe
  6.         if name != "" :
  7.                 return "La fourmis à déjà été nommée"
  8.         elif namesuffixe !="" :
  9.                 name = ("fourmiz" )+str(namesuffixe)
  10.                 namesuffixe= namesuffixe-1
  11.                 return name
  12.         elif namesuffixe !="" and namesuffix <= 0 :
  13.                 return "Error"
  14.         else :
  15.                 namesuffixe=nbrchallenger
  16.                 name = ("fourmiz" )+str(namesuffixe)
  17.                 namesuffixe=namesuffixe-1
  18.                 return name
  19. while namesuffixe !=0 :
  20.         if namesuffixe=="" :
  21.                 print ("Le nom de la fourmis", nbrchallenger, " est :", defname(name)," joli non ?" )
  22.         else :
  23.                 print ("Le nom de la fourmis", namesuffixe, " est :", defname(name)," joli non ?" )


 


---------------
--- Mon topik d'Ach/Ven ---
n°2287922
bistouille
Posté le 14-09-2016 à 14:35:04  profilanswer
 

En apparence, cela a l'air simple et intéressant d'utiliser des bonbons pour s'exercer, mais c'est bien plus complexe que cela en a l'air, y'a une multitude de couleurs de bonbons, textures, formes, goûts, contenants, supports, etc.
La classification s'avère très ardue.

 

pluma c'est l'éditeur de texte de mate, un environnement graphique de linux, normal que ça soit pas dispo sur windows.

 

Ta fonction est vraiment inutile four faire ce genre de choses que l'on peut faire avec un simple range.

 
Code :
  1. suffixeNomFourmi = 'fourmiz'
  2. nombreFourmis = 10
  3. for i in range(1, nombreFourmis + 1, -1) :
  4.     print("Le nom de la fourmi {num} est {suffixe}-{num}, joli nom, n'est-ce pas ? Comment ça non ?".format(num=i, suffixe=suffixeNomFourmi))
 

Et comme range est un générateur, et que tient d'ailleurs, ce que tu fais est de générer une liste de fourmis, tu peux même créer ton propre générateur pour y intégrer le comportement que tu souhaites.

 

Un exemple, pas très utile, mais parlant pour choisir un nom au pif parmi une liste fournie :

 
Code :
  1. from random import shuffle
  2. def genFourmis(noms, nombre) :
  3.     if len(noms) < nombre :
  4.         raise ValueError("Nombre de fourmis demandé trop conséquent par rapport au nombre de noms fournis" )
  5.     while nombre > 0 :
  6.         shuffle(noms)
  7.         yield(nombre, noms.pop())
  8.         nombre -= 1
  9. nombreFourmis = 10
  10. nomsFourmis = ['fourmisère', 'fourmignone', 'fourmitigée', 'fourmicadeau', 'fouminestrone',
  11.                'fourmirage', 'fourmirikiki', 'fourminitel', 'fourmistral', 'fourmilitaire',
  12.                'fourmirabelle', 'fourmiryapode', 'fourminimum', 'fourmimosa', 'formichedepain']
  13. for numero, nomFourmi in genFourmis(nomsFourmis, nombreFourmis) :
  14.     print("Le nom de la fourmi n°{num} est {nom}, joli nom, n'est-ce pas ? Comment ça non ?".format(num=numero, nom=nomFourmi))
   



Message édité par bistouille le 14-09-2016 à 14:35:42

---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
n°2288089
lolight
Posté le 16-09-2016 à 10:35:41  profilanswer
 

Salut Bistouille,  
Je passe rapido pour te dire merci pour ta réponse que j'ai lue mais pas encore assimilé :D
Je manque malheureusement de temps ces derniers jours pour me pencher sur le sujet :/
C'est un peut le nerf de la guerre au final le temps.
 
Oui j'étais partis sur le principe de la fourmis pour faire une espère de compétition mais je pense que ça implique que j'ai bien plus de compétence que celle que j'ai pu acquérir aujourd'hui donc ça sera surement long :)
 
Pour ce qui est de ma fonction effectivement tu viens de proposer un bout de code beaucoup plus simple et plus complet en plus. j'ai vraiment l'art pour me compliquer la vie, je manque clairement d'exercice, c'est quelques chose que j'avais vu dans un cours mais qui m'es complètement sortis de l'esprit.
 
J'ai pas tellement le temps comme dis plus haut mais je posterais sur Github mon code quand j'aurais un peut avant ça te permet d'avoir une vue d'ensemble mais en gros le but c'est d'avoir tout en objet. On génère 100 fourmis, on les répartis dans des renne, on les laisse se promener pendant 1 heure (théorique) pour voir combien de nourriture elle mange, on sélectionne les 3 meilleure de chaque groupe, on les remet en arenne, et on sort les 5 première fourmis avec leurs statistiques.  
Projet peut être trop ambitieux quand on est un noob mais bon, même si ça me prends du temps c'est pas grave ça sera marrent a faire et formateur.
 
Pour l'environnement de bureau linux oui j'avais pas tilté, j'utilise toujours pas défaut celui de debian (Gnome je crois) et Kde pour Lubuntu (à confirmer), d'ailleur la 16.04 d'Ubuntu est vraiment cool d'utilisation ! Elle me donne presque envie d'écraser ma bouse de Windows !
 
Tout ça pour dire que je repasserais avec du code frais d'ici quelques jours, et que si je réponds pas c'est juste que j'ai pas pris le temps d'assimiler assez de connaissance pour apporter une réponse construite digne d’intérêt.
 
Merci encore pour l'aide que tu m'apporte c'est un plaisir d'échanger !


---------------
--- Mon topik d'Ach/Ven ---
n°2288129
bistouille
Posté le 17-09-2016 à 00:37:36  profilanswer
 

En effet ça risque d'être un poil tendu à faire, en gros ton programme devra faire beaucoup d'aléatoire, le truc déjà flagrant c'est que si c'est du full random, la sélection des plus gloutonnes sera juste juste des cas fortuits, alors à moins de développer diverses ia pour chaque fourmis (là c'est du domaine très complexe), ça risque de pas servir à grand chose, bon je ne suis pas spécialiste en ia ou même en prog, mais quand on voit l'ia pourrie de certains jeux vidéo, on comprend aisément que c'est difficile à faire.
 
Remarque tu peux faire un concours de fourmis en plusieurs rounds et élire une vainqueur de celle qui a mangé le plus de nourriture :D


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
n°2288764
lolight
Posté le 26-09-2016 à 10:01:38  profilanswer
 

Hello Bistouille, je réponds, je prends enfin un peut de temps pour ça.  
 
Tu as dans ton message précédent bien résumé mon programme.  
En gros le but est de générer 100 instance de fourmis, les répartir dans, par exemple 5 arènes.
Ensuite les laisse, théoriquement 1h se balander dans les arènes, ensuite récupérer les meilleures et refaire la même chose puis a la fin faire un petit classement des meilleurs instances de fourmis en gros.
C'est ce sur quoi je suis partis en tout cas, et j'ai bien avancé, j'ai encore pas mal de truc à définir mais c'est plus ou moins en phase final.
 
Du coup j'ai réutilisé ton bout de code, le "for i in range(1, foumizL +1, +1), et c'est plutôt pas mal. Je génère tout mes instance de classe foumis, je fais un calcul de répartition et je génère le nombre d'arène voulue.
 
Je poste mon code ça peut être intéressant, c'est juste ma génération d'instance pour le coup.
C'est pas exactement la même chose quand je l'ai intégré dans mon programme mais c'est mon fichier de test donc on s'approche de la réalité.
Je travail beaucoup avec des variables global, trop surement au vu de se que tu m'a dis.

Code :
  1. fourmizL=0
  2. arenaL=5
  3. fourmizLname=""
  4. instancename=""
  5. instancearenaname=""
  6. arenaLname=""
  7. #range(start, stop[, step])
  8. #Rather than being a function, range is actually an immutable sequence type, as documented in Ranges and Sequence Types — list, tuple, range.
  9. def geninstances():
  10. global fourmizLname
  11. global instancename
  12. global fourmizL
  13. print("Generrating Instances ..." )
  14. for i in range (1, fourmizL + 1, +1):
  15.  instancename = ("fourmiz" )+str(i)
  16.  fourmizLname = instancename
  17.  print("La fourmis {} est née".format(instancename))
  18.  instancename = fourmis()
  19.  print("Definition of attribute name, be patient. Results : {}".format(genname()))
  20.  print("Le nom de votre fourmiz de l'instance {} est maintenant {}".format(instancename, instancename.name))
  21. print("Generating instancies finish" )
  22. print("A total of {} instancies was generated".format(fourmizL))
  23. def genname():
  24. global instancename
  25. global fourmizLname
  26. instancename.name=fourmizLname
  27. return instancename.name
  28. def genarena():
  29. global arenaL
  30. global instancearenaname
  31. global arenaLname
  32. print("Generating intances arena..." )
  33. for i in range(1, arenaL + 1, +1):
  34.  instancearenaname = ("Arena:" )+str(i)
  35.  arenaLname = instancearenaname
  36.  print("L'arenne {} est construite.".format(arenaLname))
  37.  instancearenaname = arena()
  38.  print("Definition of arena attribute name, be patient and take a cofee. Results : {}".format(genarenaname()))
  39.  print("Le nom de votre Arene de l'instance {} est mainteant {}".format(instancearenaname, instancearenaname.name))
  40. print("Generating finish" )
  41. print("Generating arena intancies have been generated".format(arenaL))
  42. def genarenaname():
  43. global instancearenaname
  44. global arenaLname
  45. instancearenaname.name=arenaLname
  46. return instancearenaname.name
  47. class fourmis:
  48. def __init__(self):
  49.  self.name = ""
  50.  self.velocity = "10"
  51. class arena:
  52. def __init__(self):
  53.  self.name = "Arena"
  54.  self.width = int(300)
  55.  self.length = int(300)
  56. if fourmizL==0 :
  57. fourmizL=input("Entre un nombre de test : " )
  58. fourmizL=int(fourmizL)
  59. print(geninstances())
  60. print(genarena())
  61. else :
  62. print(geninstances())
  63. print(genarena())


 
Me reste encore à termine les fonction déplacer presque finis), voir (finis mais a adapter), manger (codé aussi, celle la c'étais facile et rapide), et répartition (Pas encore mis le nez dedans).
 
Je passerais donner des new et poster le liens github quand ça sera fonctionnel si jamais ça intéresse.
Peace :D


---------------
--- Mon topik d'Ach/Ven ---
n°2288853
bistouille
Posté le 26-09-2016 à 21:16:40  profilanswer
 

Ton indentation a foiré :o
 
Bon, je vais être franc, tu peux pas continuer comme ça, j'ai pas bien compris ce que devait faire ton code à part des prints, mais les globales, non, non, tu t'en doutais, mais c'est pas maintenable, ça rend un code illisible et incompréhensible, et tous les autres effets pervers que cela engendrera, là tu as un simple code d'une 50aine de lignes, alors dans 500, 1000 lignes...
 
Tes noms de variables, fonctions sont aussi illisibles, il y a généralement 2 écoles, soit le camelCase soit le snake case, perso j'utilise le 1er, même si la pep python recommande je crois le snake.
 
Les classes ne sont pas uniquement destinées à contenir des attributs,
Je te l'avais déjà dit, mais => int(300) => int inutile
Il est aussi inutile de mettre des parenthèses pour une chaine => ("fourmiz" ), car on les réserve pour les tuples afin de bien les distinguer dans le code.
 
Tu devrais quand même revoir un bon tuto sur python, celui de swinnen sur developpez est très bien.
 


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Python class et méthodologie, une folle histoire de bonbons

 

Sujets relatifs
find à l'envers en Python ?[Python] Installation et Packages
Python pygame aide pour un projetProblème en Python pour un projet de balle rebondissante
PYGAME python problème labyrinthe URGENTAide Tkinter Python
PYTHON MYSQL C'est pourtant simple mais...Python : besoin de conseil pour un projet
Python tkinter taquinAIDE programme python DEBUTANT
Plus de sujets relatifs à : Python class et méthodologie, une folle histoire de bonbons


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR