Boucle for dans une liste
Fermé
aharon
-
11 mai 2021 à 09:41
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 - 11 mai 2021 à 12:07
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 - 11 mai 2021 à 12:07
A voir également:
- Boucle for dans une liste
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Liste de diffusion whatsapp - Guide
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte. - Guide
3 réponses
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
Ambassadeur
1 557
11 mai 2021 à 10:32
11 mai 2021 à 10:32
bonjour,
peux-tu montrer ton code?
merci de tenir compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
je pense que ce n'est pas une bonne idée de représenter une carte par un texte tel que "V de pique", il est préférable de la représenter via ces deux attributes, valeur et couleur.
je me demande d'où te vient l'idée de faire une boucle sur les couleurs, plutôt qu'une boucle sur les cartes du deck.
peux-tu montrer ton code?
merci de tenir compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
je pense que ce n'est pas une bonne idée de représenter une carte par un texte tel que "V de pique", il est préférable de la représenter via ces deux attributes, valeur et couleur.
je me demande d'où te vient l'idée de faire une boucle sur les couleurs, plutôt qu'une boucle sur les cartes du deck.
Bonjour. Merci de votre réponse et voici mon code:
couleurs=["carreau","coeur","trefle","pique"]
valeurs=['7',"8","9","10","V","D","R","A"]
points=[0,0,0,10,2,3,4,11]
points_atout=[0,0,14,10,20,3,4,11]
contrats=[80,90,100,110,120,130,140,150,160,170,180,"capot"]
class Carte:
def __init__(self,valeur,couleur):
self.couleur = couleur
self.valeur = valeur
def __eq__(self,other):
return self.couleur == other.couleur and self.valeur == other.valeur
def __repr__(self):
return f'{self.valeur} de {self.couleur}'
class Coinche:
def __init__(self):
self.deck = [Carte(valeur,couleur) for couleur in couleurs for valeur in valeurs]
def distribution(self):
melange=random.sample(self.deck,len(self.deck))
#print(melange)
self.deck1=sum([melange[i:i+4] for i in range(0,len(melange),16)],[])
print("Nord:",self.deck1)
self.deck2=sum([melange[i:i+4] for i in range(4,len(melange),16)],[])
#print("Est:",self.deck2)
self.deck3=sum([melange[i:i+4] for i in range(8,len(melange),16)],[])
#print("Sud:",self.deck3)
self.deck4=sum([melange[i:i+4] for i in range(12,len(melange),16)],[])
#print("Ouest:",self.deck4)
return self.deck1,self.deck2,self.deck3,self.deck4
def prem(self):
deck_nord=self.deck1
#print(deck_nord)
encheres=0
cnt=0
if 'V de pique' or 'V de trefle' or 'V de coeur' or 'V de carreau' in deck_nord:
#if Carte(valeur,couleur) in deck_nord:
#if ('V de',f'{self.couleur}') in deck_nord:
#for cartes in deck_nord
for coul in couleurs:
print(f'A de {coul}')
if f'A de {coul}' in deck_nord:
cnt+=1
if cnt>=2:
encheres+=80
print("Nord annonce:",[encheres],"de", f'{Cartes(couleur)}')
else:
print("Nord passe",encheres)
Je dois surement très mal expliquer mon problème mais j'arrive à faire une boucle sur une liste en utilisant:
for couleur in couleurs:
if f'V de {couleur} in l:
et ça semble marcher mais je sais pas si c'est optimisé
couleurs=["carreau","coeur","trefle","pique"]
valeurs=['7',"8","9","10","V","D","R","A"]
points=[0,0,0,10,2,3,4,11]
points_atout=[0,0,14,10,20,3,4,11]
contrats=[80,90,100,110,120,130,140,150,160,170,180,"capot"]
class Carte:
def __init__(self,valeur,couleur):
self.couleur = couleur
self.valeur = valeur
def __eq__(self,other):
return self.couleur == other.couleur and self.valeur == other.valeur
def __repr__(self):
return f'{self.valeur} de {self.couleur}'
class Coinche:
def __init__(self):
self.deck = [Carte(valeur,couleur) for couleur in couleurs for valeur in valeurs]
def distribution(self):
melange=random.sample(self.deck,len(self.deck))
#print(melange)
self.deck1=sum([melange[i:i+4] for i in range(0,len(melange),16)],[])
print("Nord:",self.deck1)
self.deck2=sum([melange[i:i+4] for i in range(4,len(melange),16)],[])
#print("Est:",self.deck2)
self.deck3=sum([melange[i:i+4] for i in range(8,len(melange),16)],[])
#print("Sud:",self.deck3)
self.deck4=sum([melange[i:i+4] for i in range(12,len(melange),16)],[])
#print("Ouest:",self.deck4)
return self.deck1,self.deck2,self.deck3,self.deck4
def prem(self):
deck_nord=self.deck1
#print(deck_nord)
encheres=0
cnt=0
if 'V de pique' or 'V de trefle' or 'V de coeur' or 'V de carreau' in deck_nord:
#if Carte(valeur,couleur) in deck_nord:
#if ('V de',f'{self.couleur}') in deck_nord:
#for cartes in deck_nord
for coul in couleurs:
print(f'A de {coul}')
if f'A de {coul}' in deck_nord:
cnt+=1
if cnt>=2:
encheres+=80
print("Nord annonce:",[encheres],"de", f'{Cartes(couleur)}')
else:
print("Nord passe",encheres)
Je dois surement très mal expliquer mon problème mais j'arrive à faire une boucle sur une liste en utilisant:
for couleur in couleurs:
if f'V de {couleur} in l:
et ça semble marcher mais je sais pas si c'est optimisé
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
11 mai 2021 à 11:57
11 mai 2021 à 11:57
un exemple pour compter les as et les valets:
mondeck=[Carte("V","P"),Carte("V","C"),Carte("V","PK"),Carte("V","T"), Carte("A","P"),Carte("A","P"),Carte("A","P"),Carte("A","P")] cntV=0 cntA=0 for carte in mondeck: if carte.valeur=="A": cntA += 1 elif carte.valeur=="V": cntV += 1 print (mondeck) print(cntA,cntV)
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
>
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
11 mai 2021 à 12:07
11 mai 2021 à 12:07
ou bien:
def cntAV(undeck): cntV=0 cntA=0 for carte in undeck: if carte.valeur=="A": cntA += 1 elif carte.valeur=="V": cntV += 1 return cntA,cntV deckun,deckdeux,decktrois,deckquatre=Coinche().distribution() print (deckun) print ("nombre d'as et de valets:",cntAV(deckun))
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
11 mai 2021 à 11:35
11 mai 2021 à 11:35
Bonjour,
Tu n'as pas tenu compte des balises de code:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :
Tu n'as pas tenu compte des balises de code:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :
def test(): print('test') test()