|
|
|
#1 (permalink) |
|
Messages: n/a
Hébergeur: |
Bonjour,
J'aimerais apprendre la notion de classes. Pour cela j'aimerais créer un petit fichier "py" me permettant de tirer au sort 7 numéros sur 4 grilles. Voila comment je vois les choses simples pour le moment, on affinera ensuite. J'aurais 4 classes, 1 classe pour chaque grille, que je nommerais grille1, grille2, grille3 et grille4. Pour grille1 Créer ma liste de numéros (liste1) Prendre 1 numéro au hasard entre 1 et 49 Répéter "prendre 1 numéro au hasard entre 1 et 49" 6 fois Mettre les 7 numéros dans liste1 Pour grille2 Idem grille1 Merci de m'aiguiller sans me donner la réponse, j'aimerais penser comme vous, et ne pas recopier betement sans comprendre vos codes. Question 1 : Est-ce que créer une classe grille est concevable est correct, sachant que j'imagine ma classe comme un objet? Question 2 : Dans ma façon de penser, est-ce correct ou non? Merci de m'aider à travailler sur python A bientot Je reviens demain soir, vous répondre. Bye |
|
|
|
#2 (permalink) |
|
Messages: n/a
Hébergeur: |
fred1599@gmail.com wrote:
> Bonjour, Bonjour, > J'aurais 4 classes, 1 classe pour chaque grille, que je nommerais > grille1, grille2, grille3 et grille4. Moi j'aurais plutot tendance à dire qu'il y a une seule classe "Grille", et 4 instances (grille_1, ..., grille_4) de cette classe. Sinon, et puisque j'y pense, au niveau de la façon d'écrire le code, je te conseille ceci: http://www.python.org/dev/peps/pep-0008/ (section "Naming Conventions") ou tu verras comment "ecrire correctement" le nom d'une classe et d'une instance. |
|
|
|
#3 (permalink) |
|
Messages: n/a
Hébergeur: |
Mihamina (R12y) Rakotomandimby wrote:
> http://www.python.org/dev/peps/pep-0008/ (section > "Naming Conventions") http://lapagearegis.free.fr/guidedestyle.html -> Conventions de Nommage |
|
|
|
#4 (permalink) |
|
Messages: n/a
Hébergeur: |
On 9 sep, 21:44, "Mihamina (R12y) Rakotomandimby" <miham...@rktmb.org>
wrote: > Mihamina (R12y) Rakotomandimby wrote: > >http://www.python.org/dev/peps/pep-0008/(section > > "Naming Conventions") > > http://lapagearegis.free.fr/guidedestyle.html > -> Conventions de Nommage Ok un truc du genre class Grille : a=grille1.Grille [] #création de l'instance grille1 b=grille2.Grille [] c=grille3.Grille [] d=grille4.Grille [] Ici je n'ai pas besoin apparement d'argument pour construire ma classe il me semble? Merci pour ton aide |
|
|
|
#5 (permalink) |
|
Messages: n/a
Hébergeur: |
> > Sinon, et puisque j'y pense, au niveau de la façon d'écrire le code, je > te conseille ceci: http://www.python.org/dev/peps/pep-0008/ (section > "Naming Conventions") ou tu verras comment "ecrire correctement" le nom > d'une classe et d'une instance. J'avais noté ca aussi pour les conventions http://conferences.oreillynet.com/pr...os_goodger.pdf Pour le faire du code avec une classe je ferais ca mais.... from random import randint class Grille(list): def __init__(self): i = 1 while i <=7: self.append(randint(0,49)) i += 1 g1 = Grille() g2 = Grille() g3 = Grille() g4 = Grille() print g1 print g2 print g3 print g4 ....une question idiote ca marche mais pourquoi? je suis un peu surpris de ne pas devoir appeler le contructeur de list dans le contructeur de Grille. Désolé d'embrouiller la réponse. bonne nuit |
|
|
|
#6 (permalink) |
|
Messages: n/a
Hébergeur: |
fred1599@gmail.com a écrit :
> Bonjour, > > J'aimerais apprendre la notion de classes. > > Pour cela j'aimerais créer un petit fichier "py" me permettant de > tirer au sort 7 numéros sur 4 grilles. > > Voila comment je vois les choses simples pour le moment, on affinera > ensuite. > > J'aurais 4 classes, 1 classe pour chaque grille, que je nommerais > grille1, grille2, grille3 et grille4. AMHA, tu n'a pas compris le principe de base d'une classe. Tu n'a pas besoin de 4 classes différentes, une seule suffit. Regarde la class int (les nombres entiers) : c'est la même classes pour tous les entiers, pas une classe par nombre !-) > Pour grille1 > Créer ma liste de numéros (liste1) > Prendre 1 numéro au hasard entre 1 et 49 > Répéter "prendre 1 numéro au hasard entre 1 et 49" 6 fois > Mettre les 7 numéros dans liste1 Ce que tu décris là est un algorithme, pas un type. Avant toute autre chose, une classe décrit un type de données, c'est à dire la structure de données, la plage de valeurs, et les opérations possibles. Dans ton cas, ta classe Grille serait un ensemble de 7 nombres entier compris entre 1 et 49. Je te laisse définir les opérations qui te semblent appropriées, mais tu peux déjà songer à l'égalité (deux grilles sont elles identiques ?). mes deux centimes... |
|
|
|
#7 (permalink) |
|
Messages: n/a
Hébergeur: |
fred1599@gmail.com a écrit :
> On 9 sep, 21:44, "Mihamina (R12y) Rakotomandimby" <miham...@rktmb.org> > wrote: >> Mihamina (R12y) Rakotomandimby wrote: >>> http://www.python.org/dev/peps/pep-0008/(section >>> "Naming Conventions") >> http://lapagearegis.free.fr/guidedestyle.html >> -> Conventions de Nommage > > Ok un truc du genre > > class Grille : > a=grille1.Grille [] #création de l'instance grille1 Dis voir... Qu'est-ce que tu dirais de lire un tutoriel Python avant d'aller plus loin ? |
|
|
|
#8 (permalink) |
|
Messages: n/a
Hébergeur: |
jean-marc pouchoulon a écrit :
> >> >> Sinon, et puisque j'y pense, au niveau de la façon d'écrire le code, >> je te conseille ceci: http://www.python.org/dev/peps/pep-0008/ >> (section "Naming Conventions") ou tu verras comment "ecrire >> correctement" le nom d'une classe et d'une instance. > > J'avais noté ca aussi pour les conventions > http://conferences.oreillynet.com/pr...os_goodger.pdf > > Pour le faire du code avec une classe je ferais ca mais.... > > from random import randint > > class Grille(list): > def __init__(self): > i = 1 > while i <=7: > self.append(randint(0,49)) > i += 1 > for i in xrange(1,8): self.append(randint(1,49)) > g1 = Grille() > g2 = Grille() > g3 = Grille() > g4 = Grille() > > print g1 > print g2 > print g3 > print g4 > > > ...une question idiote ca marche mais pourquoi? Pourquoi est-ce qye ça ne marcherais pas ? > je suis un peu surpris de ne pas devoir appeler le contructeur de list > dans le contructeur de Grille. Tu n'a pas surchargé le constructeur de list, tu n'a donc pas à l'appeler. Note bien que __init__() n'est *pas* le constructeur, mais l'initialiseur. Le constructeur, c'est __new__(). Accessoirement, sous-classer liste n'est probablement pas la meilleur chose à faire ici. Une grille de loto n'est définitivement pas une liste (sémantique et invariants différents). Que tu utilise une liste pour implémenter ta grille, c'est ton choix (et une solution possible), mais ça ne devrait pas être visible. |
|
![]() |
| Outils de la discussion | |
|
|