Fonction de tri
enam07
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
bonjour ,
je fais appel à vous car j'essaie de programmer une fonction donne() qui renvoie un quadruplet aléatoire de donnes de treize cartes.
Ces donnes seront représentées par des tableaux de 13 cartes triées. Pour trier les cartes on adaptera
la fonction tri_selection(T) et on utilisera la fonction superieure (carte1,carte2):
voila ce que j'ai essayé :
T2=['pique','coeur','carreau','trèfle']
T1=['as','roi','dame','valet','10','9','8','7','6','5','4','3','2']
from random import randint
def indice_mini(T,i):
n=len(T)
assert i!=n
m=i
for k in range(i+1,n):
if T[k]>T[m] :
m=k
if m!=i :
T[i],T[m]=T[m],T[i]
return m
def tri_selection(T):
for j in range(0,len(T)-1):
indice_mini(T,j)
return T
def init_jeu():
resultat = []
for card in T1:
for fig in T2:
resultat.append(card + ' ' + fig)
return resultat
def superieur(carte1,carte2):
T=init_jeu()
for i in range(len(T)):
if T[i]==carte1:
return True
if T[i]==carte2:
return False
def donne():
i=0
T=init_jeu()
c1=[]
c2=[]
c3=[]
c4=[]
while i<14 :
c1.append(T[randint(0,51)])
c2.append(T[randint(0,51)])
c3.append(T[randint(0,51)])
c4.append(T[randint(0,51)])
i=i+1
tri_selection(C1)
tri_selection(c2)
tri_selection(c3)
tri_selection(c4)
return c1
def indice_minie(T,i):
mi=T[i]
m=i
for j in range(i,len(T)):
if mi>T[i]:
mi=T[i]
m=j
return m
merci d'avance .
je fais appel à vous car j'essaie de programmer une fonction donne() qui renvoie un quadruplet aléatoire de donnes de treize cartes.
Ces donnes seront représentées par des tableaux de 13 cartes triées. Pour trier les cartes on adaptera
la fonction tri_selection(T) et on utilisera la fonction superieure (carte1,carte2):
voila ce que j'ai essayé :
T2=['pique','coeur','carreau','trèfle']
T1=['as','roi','dame','valet','10','9','8','7','6','5','4','3','2']
from random import randint
def indice_mini(T,i):
n=len(T)
assert i!=n
m=i
for k in range(i+1,n):
if T[k]>T[m] :
m=k
if m!=i :
T[i],T[m]=T[m],T[i]
return m
def tri_selection(T):
for j in range(0,len(T)-1):
indice_mini(T,j)
return T
def init_jeu():
resultat = []
for card in T1:
for fig in T2:
resultat.append(card + ' ' + fig)
return resultat
def superieur(carte1,carte2):
T=init_jeu()
for i in range(len(T)):
if T[i]==carte1:
return True
if T[i]==carte2:
return False
def donne():
i=0
T=init_jeu()
c1=[]
c2=[]
c3=[]
c4=[]
while i<14 :
c1.append(T[randint(0,51)])
c2.append(T[randint(0,51)])
c3.append(T[randint(0,51)])
c4.append(T[randint(0,51)])
i=i+1
tri_selection(C1)
tri_selection(c2)
tri_selection(c3)
tri_selection(c4)
return c1
def indice_minie(T,i):
mi=T[i]
m=i
for j in range(i,len(T)):
if mi>T[i]:
mi=T[i]
m=j
return m
merci d'avance .
A voir également:
- Fonction de tri
- Fonction si et - Guide
- Comment faire un tri personnalisé sur excel - Guide
- Logiciel tri photo - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
1 réponse
Merci de prendre l'habitude d'insérer ton code Python bien indenté. Pour cela, au dessus de l'espace ou tu tapes ton texte sur le forum, clique sur le menu déroulant <> et choisi "python". Ensuite, colle ton code entre les deux bornes python créées dans ton message.
J'ai fait le boulot à ta place et voici ce que ça donne :
Déjà, il y a un petit problème de logique. Dans ta fonction donne(), tu choisi 5 cartes c1,c2,c3,c4,c5 comprise dans le jeu. Mais tu n'a pas fait attention que, dans ces 5 cartes, il pouvait y en avoir plusieurs identiques (d'après ton code). Sauf s'il s'agit d'un tirage simultané avec remise, il y a une erreur.
J'ai fait le boulot à ta place et voici ce que ça donne :
T2=['pique','coeur','carreau','trèfle'] T1=['as','roi','dame','valet','10','9','8','7','6','5','4','3','2'] from random import randint def indice_mini(T,i): n=len(T) assert i!=n m=i for k in range(i+1,n): if T[k]>T[m] : m=k if m!=i : T[i],T[m]=T[m],T[i] return m def tri_selection(T): for j in range(0,len(T)-1): indice_mini(T,j) return T def init_jeu(): resultat = [] for card in T1: for fig in T2: resultat.append(card + ' ' + fig) return resultat def superieur(carte1,carte2): T=init_jeu() for i in range(len(T)): if T[i]==carte1: return True if T[i]==carte2: return False def donne(): i=0 T=init_jeu() c1=[] c2=[] c3=[] c4=[] while i<14 : c1.append(T[randint(0,51)]) c2.append(T[randint(0,51)]) c3.append(T[randint(0,51)]) c4.append(T[randint(0,51)]) i=i+1 tri_selection(C1) tri_selection(c2) tri_selection(c3) tri_selection(c4) return c1 def indice_minie(T,i): mi=T[i] m=i for j in range(i,len(T)): if mi>T[i]: mi=T[i] m=j return m
Déjà, il y a un petit problème de logique. Dans ta fonction donne(), tu choisi 5 cartes c1,c2,c3,c4,c5 comprise dans le jeu. Mais tu n'a pas fait attention que, dans ces 5 cartes, il pouvait y en avoir plusieurs identiques (d'après ton code). Sauf s'il s'agit d'un tirage simultané avec remise, il y a une erreur.