Programmer un jeu de dés sur Python

Résolu/Fermé
JNHouchat - 18 févr. 2022 à 02:10
 JNHouchat - 22 févr. 2022 à 20:48
Bonjour,

Je suis docteur en neurobiologie et actuellement en poste à Buenos Aires. Pour faire ce que je dois faire, j'ai commencé à m'intéresser à la programmation et suis actuellement un cours de Python. Je début donc !

Le dernier exercice qu'on m'a donné à faire me donne du fil à retordre. En effet, les argentins jouent au Diez-mil, un jeu où on lance un dé n fois et si sur ces n lancers, on tombe une seule fois sur 6, on a perdu.


(1) La première étape de l'exo a été de créer une fonction lancer_unique, j'ai donc fait ça...

import random

def lancer_unique():
return random.randint(1,6)

resultat_1=lancer_unique()
print(resultat_1)

... jusque là, pas de souci.


(2) Ensuite, il fallait créer une fonction pour n lancers...

liste_1=[ ]

n=random.randint(1,8)

def lancer_multiple(n):
i=0
while i < n:
rep= lancer_unique()
i=i+1
liste_1.append(rep)
return liste_1

resultat_2=lancer_multiple(n)
print(resultat_2)

... ça m'a pas l'air trop mal non plus.


(3) Puis il fallait dire si c'était une série de lancers gagnante (True) ou s'il y avait un 6 dans la série (False)...

def gagne_ou_perd(liste_1):
rep2=True
for i in range (0,len(liste_1),1):
if liste_1[i]==6:
rep2 = False
return rep2

resultat_3=gagne_ou_perd(liste_1)
print(resultat_3)

... Jusqu'ici, tout a bien fonctionné.

(4) C'est ICI QUE JE SECHE ! Il faut maintenant imaginer une fonction multijouer(k,n) où k est le nombre de joueurs. Cette fonction doit renvoyer une liste indiquant pour chaque joueur "gagné" ou "perdu". J'ai donc d'abord voulu créer une liste finale contenant les séries de chaque joueur avant d'attribuer des "gagné" ou "perdu", j'ai fait ça pour le moment mais ça me sort une liste finale contenant des liste_1 identiques, comme si chaque joueur avait fait exactement la même série...

k=random.randint(2,4)

liste_finale=[ ]

def jouer_a_plusieurs(k,n):
i=1
while i<=k:
chaque_joueur=lancer_multiple(n)
i=i+1
liste_finale.append(chaque_joueur)
return liste_finale

resultat_4=jouer_a_plusieurs(k,n)
print(resultat_4)

... j'imagine qu'il y a un moyen d'utiliser les fonctions précédemment définies mais je ne vois pas comment.

Un coup de main serait donc super bienvenu, merci :)

Configuration: Windows / Chrome 98.0.4758.102
A voir également:

5 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
18 févr. 2022 à 11:46
Bonjour
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.

0
En effet, je n'avais pas vu qu'en copiant collant l'indentation avait disparu ! Désolé !
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
18 févr. 2022 à 13:41
bonjour,
Si tu veux comprendre ce que fait ton programme, ajoute des print().
Pour commencer, ajoute
print(liste_finale)
juste après
liste_finale.append(chaque_joueur)
.
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
18 févr. 2022 à 15:48
ta principale erreur, c'est:
liste_1=[ ]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Désolé pour le temps de réponse, les derniers jours au labo ont été intenses ! J'ai finalement pu résoudre mon problème, je tenais à vous le dire, c'était une erreur toute bête, mais bon, comme je l'ai dit, je débute :)

Merci !
0