Salut à tous,
L'exercice de cet excellent livre, page 172 propose une manip sur une classe 'Domino'.
Une fois terminée, j'ai essayé de manipuler la liste ainsi créée sans beaucoup de succès.
Il semble que plusieurs méthodes de liste ne s'appliquent plus à celle-ci.
En particulier les méthodes ou fonctions 'sort' et 'print'
Je n'ai pas réussi à afficher simplement le contenu brut de la liste comme --> print(liste)
En ligne 49 du code ci-après, une valeur 'None' s'affiche sans que je comprenne pourquoi.
Si quelqu'un a une explication, merci d'avance.
L.P.

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
#! /usr/bin/env python
# -*- coding: UTF-8 -*-
 
from random import*
 
liste_dominos=[]
 
class Domino(object):
    def __init__(self,fA=0,fB=0):
        self.fA=fA
        self.fB=fB
 
    def affiche_points(self):
        print("Face A=", self.fA," et  Face B=", self.fB , end='    ')
 
    def valeur(self):
        return self.fA + self.fB
 
for i in range (6,-1,-1):
#    print (i) # pour verif.
    for y in range(0, i + 1):
#        print (i, y) # pour verif.
        liste_dominos.append(Domino(i, y))
 
vt = 0
 
for i in range(28):
    liste_dominos[i].affiche_points()
    print(r"valeur:", liste_dominos[i].valeur())
    vt = vt + liste_dominos[i].valeur()
print("nombre de dominos: ", len(liste_dominos))
print("valeur totale des dominos:", vt, "points")
 
""" les fonctions de tri sont out
liste_dominos.sort() # renvoi une erreur
"""
 
##for i in range(27, -1, -1): # ---sorte de tri inverse---
##    liste_dominos[i].affiche_points()
##    print(r"valeur:", liste_dominos[i].valeur())
##    vt = vt + liste_dominos[i].valeur()
 
#print(liste_dominos) # donne seulement l'adresse memoire des indices de la liste
 
t = randrange(28) ; print("tirage: ", t)
#print(liste_dominos[t]) # donne seulement l'adresse memoire de l'indice [t] de la liste
 
print(liste_dominos[t].affiche_points(), "valeur: ", liste_dominos[t].valeur())
 
## --> renvoi Face A= 1  et  Face B= 1    None valeur:  2 ( si 2 = t )