Bonjour,
Je parcours actuellement le tutoriel "Apprendre à programmer avec Python" par Gérard Swinnen. J'essaie de résoudre l'exercice 12.7 où il faut tirer des cartes.
J'arrive à afficher le jeu que je viens de mélanger. Mais à chaque fois que je tire une carte, je l'affiche et j'ai un résultat inattendu, un None en plus de la valeur de la carte. Je ne vois pas d'où vient ce None.
Il doit y avoir un bug dans mon programme mais je ne vois pas où. J'utilise la version 2.5.1 sur windows.
J'ai aussi fait du pas a pas mais je comprends pas pourquoi la fonction affiche me met un None en plus.
Si une âme charitable pouvait jeter un coup d'œil, ce serait sympa. Merci d'avance.
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
52
53
54
55
56
57
58
59
60
61 from random import shuffle class Carte: "carte" def __init__(self, couleur, valeur): self.couleur = couleur self.valeur = valeur def affiche(self): print str(self.valeur) + ' de ' + self.couleur class JeuDeCarte: "jeu de carte" def __init__(self): self.paquet = [] couleurs = ['trèfle', 'pique', 'carreau', 'coeur'] for cc in couleurs: self.ajouterCarte(Carte(cc, 'as')) self.ajouterCarte(Carte(cc, 'roi')) self.ajouterCarte(Carte(cc, 'dame')) self.ajouterCarte(Carte(cc, 'valet')) for vv in range(2,11): self.ajouterCarte(Carte(cc, vv)) def ajouterCarte(self, carte): self.paquet.append(carte) def tirer(self): if (0 < len(self.paquet)): return self.paquet.pop() else: return None def affiche(self): for card in self.paquet: card.affiche() def melanger(self): shuffle(self.paquet) print "*** programme principal ***" jeu = JeuDeCarte() #jeu.affiche() print "*** melange ***" jeu.melanger() jeu.affiche() print "*****" for n in range(53): # tirage des 52 cartes : c = jeu.tirer() if c == None: # il ne reste plus aucune carte print 'Terminé !' # dans la liste else: # BUG ! affiche la valeur de la carte + None !?!?! print c.affiche() # valeur et couleur de la carte
Partager