Je débute en informatique (formation SIO option réseaux) et je travaille sur 2 livres pour la programmation : le manuel Foucher pour les maths et l'algo, le manuel de Vincent Le Goff (acheté ici) pour Python.
Dans le Foucher, il y a un jeu que je n'arrive pas à programmer complètement.
Le jeu à gratter est un jeu de hasard. On fait Entrée 5 fois et on obtient à chaque fois un nombre entre 1 et 5. Les 5 résultats s'additionnent.
Si le nombre est inférieur ou égal à 2, on gagne 2 euros
Si la somme totale est paire, on gagne 1 euro.
Jusque là j'ai réussi.
Si le même nombre revient 3 fois ou plus, on gagne 5 euros. Je ne sais pas comment programmer cette condition. Auriez-vous une idée ?
Merci beaucoup.
Pour info, voici le jeu en Python :
from random import* E=[3,5,1,4,2] # Ensemble print(E) S=0 i=0 G=0
while i<len(E): #len(E) = taille de E l'Ensemble n=input("\nPour gratter faites Entrée :") n=randint(1,5) print("Vous avez gratté le nombre ",n)
if n<=2: G=G+2 print("YESSS !! Le nombre est inférieur ou égal à 2,\ndonc vous gagnez",G," euros.") S= n+S print("La somme des nombres est : ",S,) i+=1
if S%2==0: G=G+1 print("Somme paire en plus ! Vous gagnez 1 euro de plus.") print("\nTotal de vos gains : ",G, "euros.")
Tu dois commencer avec une liste vide. Tu vas ajouter les chiffres grattés à cette liste avec la méthode append. Ta boucle ne devrait pas être un while mais un for i in range(5): puisque tu connais le nombre d'itération à faire.
Après ta boucle tu peux calculer la somme de ta liste avec la fonction sum. Et tu pourrais aussi vérifier s'il y a répétition des éléments dans cette liste.
PS: sur le forum, met ton code dans les balises de code (bouton </>).
pour vérifier s'il y aune répétition des éléments tu met ces éléments dans une liste avec la methode liste.append(element) après tu utilises la boucle for comme ça for elt in liste:
STP place ton code dans les balises de code </>, c'est illisible ainsi...
Pour sum, c'est dans la doc. Tu passes en argument ta liste.
Pour la répétition des éléments, tu pourrais trier ta liste avec list.sort(). Ensuite tu itères sur chaque élément de la liste (une boucle for) et tu as une variable compteur, et élément_précédent que tu initialise respectivement à 1 et None. Pour chaque élément tu regardes s'il est égale à l'élément_précédent. Si oui, tu incrémentes compteur de 1. Si compteur est supérieur ou égal à 3, ça y est. Si l'élément est différent du précédent, tu ré-initialises le compteur à 1. Finalement tu assignes l'élément actuel à l'élément précédent et on reprend la boucle.
Mes 2 progressions ne sont pas harmonisées : le Foucher est trop succint et je dois me débrouiller (c'est pourquoi je bloque aujourd'hui), le manuel Python est très riche et je n'ai pas encore découvert les notions qui pourraient m'aider.
Il faut que j'avance en Python et je verrai mieux. Mais je vais quand même insister avec tes conseils et je te dirai.
Merci en tout cas pour tes efforts pour m'aider, c'est très sympa de ta part.
relit bien tu comprendra je l'ai simplifie pour toi comme tu n'a pas encore fini de lire le livre peut etre que la methode append (liste.append(element)) te sera etrangere mais sache tout simplement que c'est pour ajouter un element a un liste utilise la tout simplement!!! DZl pour les accents j'utilise un clavier americain et je le prefere comme ca
- Edité par Betsalel LAHOUTOU 29 mars 2015 à 0:42:43
from random import randrage # randrage pernet de generer des nombres aleatoires dans notre cas ca sera entre 1 et 5
partie = True # un booleen qui nous pernet de continuer ou arreter le jeux
while partie:
i = 0 # c'est une variable qu'on va utiliser pour boucler afin de pouvoir avoir 5 fois des nombres aleatoires
s = 0 # la variable qui contiendra la somme des nombres
argent = 0
liste = [] #dans cette liste je vais ajouter les les nombres que le programme va generer
while i < 5:
input(''Appuyer sur entrer: '') # enfait on n'a pas besoin que l'utilisateur nous fourni des valeurs donc pas la peine d'affecter a une variable la valeur saisie
nombre = random.randrange(1, 5)
print("Vous avez gratez", nombre)
s = s + nombre # on ajoute chaque fois le nombre qu'on trouve a l'ancienne valeur de somme et somme prend cette nouvelle valeur
liste.append(nombre) # cette ligne permet tout simplement d'ajouter les nombres generer a la liste on l'appelle une methode des liste
i += 1 # on incremente pour que la boucle s'execute jusqu'a 5 fois puisque l'utilisateur doit taper 5 fois entrer
if s <= 2:
argent += 2
print('YESSS!!!!'Le nombre est nferieur a deux vous gagnez 2 euros vous disposez maintenant de", argent, "euro")
if argent %2 == 0:
argent += 1
print("La somme est paire vous gagnez 1 euro vous disposez maintenant de", argent)
n = 0 # c'est le compteur du nombre d'occurence des elements de la liste
for elt in liste: # on parcour les elements de la liste
for nb in liste: # ici on parcourt la liste une deuxieme fois pour comparer premier element de la liste aux suivants
if elt == nb:
n += 1
if n < 3: # ici si pour le premier element l'occurence n'est pas superieur a trois on ramene le compteur a zero pour pouvoir compter l'element suivant
n = 0
if n >= 3:
argent += 5
print("Un element c'est repete au moins 3 fois vous gagnez 5 euros vous disposez maintenant de", argent, "euros")
choix = input("voulez vous continuer?(o/n) ")
if choix == "n":
partie = False #alors le programme se ferme
else:
partie = True # on reprend le jeu
Sauf que le code contient des petites fautes. Enfin, ça lui fera un bon exercice pour essayer de comprendre la méthode, sans faire un bête copier-coller...
Et comme je l'avais mentionné plus haut en commentaire de son code, il est préférable de faire une boucle for plutôt que while vu qu'on sait qu'on doit répéter les instructions suivantes 5 fois.
Voila ma solution, pour une fois je n'ai pas condensé et je pense que c'est assez clair:
from random import randint
n = 5 #le nombre d'essais
cagnotte = 0 #notre gain
liste_numeros = []
def somme(liste):
"""Même chose que la fonction sum (en moins bien), mais on le fait
nous-même"""
compteur = 0
for elt in liste:
compteur += elt
return compteur
for i in range(n):
input("Apppuyez sur entrée pour jouer: ")
numero = randint(1, 5)
liste_numeros.append(numero)
if numero <= 2:
cagnotte += 2
if somme(liste_numeros) % 2 == 0:
cagnotte += 1
if liste_numeros.count(numero) >= 3:
#on compte le nombre d'occurences du numéro en cours dans la liste
cagnotte += 5
print("Votre cagnotte est de: {}".format(cagnotte))
S'il y a quelque chose que tu ne comprends pas, n'hésite pas à me demander
Toi tu vérifies durant l'ajout des nombres et donc tu n'auras pas le résultat correct. Il faut sortir cette partie hors de la boucle.
Pour la partie concernant le nombre d’occurrences d'un même nombre, c'est aussi erroné. Imagine qu'on gratte 5 fois le nombre 2. Tu vas augmenter ta cagnotte de 15 et non que de 5.
Ouh, dire que j'avais renoncé en partant du principe que j'y reviendrais après poursuite du cours !
Merci beaucoup à vous pour toutes ces aides !
J'avais réussi le jeu du Casino (dans le manuel de Vincent Le Goff), mais ce jeu dans le manuel Foucher me donne bien du fil à retordre... Je reste persuadée que je n'ai pas encore le niveau requis, même si dans la progression du Foucher, on doit pouvoir écrire les algo et les coder avec les connaissances qui précèdent (logique).
from random import*
partie = True # un boléen pr continuer plus facilement
while partie:
S=0 #var pour la somme des n
i=0 # var pour la boucle de 5 fois
G=0 # var pr le gain
n=0 # n du tirage
liste=[]
while i<5 : #5 = 5 tirages possibles
input("\nPour gratter faites Entrée :")
n=randint(1,5)
print("Vous avez gratté le nombre ",n)
S=S+n
liste.append(n)
print("Nombres rangés ", liste)
i+=1# incrémentation jusqu'à 5 tirages
if n<=2:
G+=2
print("YESSS !! Le nombre est inférieur ou égal à 2,\ndonc vous gagnez",G," euros.")
print("La somme des nombres est : ",S,)
n = 0 # c'est le compteur du nombre d'occurence des elements de la liste
for elt in liste: # on parcourt les elements de la liste (mot-clé elt)
for nb in liste: # ici on parcourt la liste une deuxieme fois (mot clé nb)
#pour comparer premier element de la liste aux suivants
if elt == nb:
n += 1
if n < 3: # ici si pour le premier element l'occurence
#n'est pas superieur à trois on ramene
#le compteur à zero pour pouvoir compter l'element suivant
n = 0
if n >= 3:
G += 5
print("Un élément s'est repete au moins 3 fois")
print ("vous gagnez 5 euros vous disposez maintenant de", G, "euros")
if S%2==0:
G+=1
print("\nSomme paire ! Vous gagnez 1 euro de plus.")
print("\nTotal de vos gains : ",G, "euros.")
choix = input("Voulez-vous continuer ? (o/n) ")
if choix=="n":
partie=False
print("A bientôt.")
else:
partie=True
# mots clés découverts : elt et nb
Voici celui de betsaa00yn. Il marche très bien !
Je ne connaissais pas les mots-clés : nb et elt (c'en est bien ?).
La méthode append était citée dans le Foucher mais sans être exploitée. J'ai préféré commencer avec celle-ci.
Je confondais 2 choses : la liste (pour la répétition des éléments) et le tirage au sort des 5 éléments.
Je n'aurais jamais pensé à tout ceci. Je ne suis donc pas encore au point !
Je vais essayer les autres codes.
A très vite pour la suite, et merci encore, je rumine depuis vendredi et ça gâche un peu le week-end !!
en fait nb et elt ne sont pas de mots cles se sont des variables auxquelles tu affectes a chaque fois la valeur des elements de ta liste
c'est a dire quand tu fais:
for elt in liste: #tu peux aussi mettre nb a la place de elt
print(elt) """ au premier tour de la boucle elt prend
la valeur du premier element de ta boucle, au deuxieme tour il prend la valeur du deuxieme element donc a la fin il aura la valeur du dernier element de ta liste"""
- Edité par Betsalel LAHOUTOU 29 mars 2015 à 17:27:34
# for...in range
# for elt in (T) très impt
partie = True
while partie :
from random import*
T=[]
S=0
G=0
i=0
k=0
for i in range(5) :
n=input("\n\nPour gratter faites Entrée :")
n=randint(1,5)
print("Vous avez gratté le nombre ",n)
T.append(n)
print("classement : ",T)
if n<=2:
G=G+2
print("YESSS !! Le nombre est inférieur ou égal à 2,\ndonc vous gagnez",G," euros.")
i+=1
S=S+n
n=0#compteur à 0 pr les occurrences du tableau(pas de la boucle !)
for elt in(T):#on parcourt les elts tableau, soit sorte d'indice
for nb in T:#on parcourt les n tirés pr comparer n et elt
if elt==nb:
n+=1 #on incrémente
if n<3:
n=0 #on remet à 0
if n>=3: # on gagne !
G+=5
print("Un élément s'est répété au moins 3 fois,\nvous gagnez 5 euros de plus, \nce qui vous fait ", G, "euros.")
print("Somme totale des nombres grattés : ",S)
if S%2==0: G=G+1 print("Somme paire ! Vous gagnez 1 euro de plus.") print("\nTotal de vos gains : ",G, "euro(s).")
choix =input("Vous continuez ? (o/n) ") if choix =="n": partie =False print("Salut.") else: partie=True print("Bravo.")
Voici celui que j'ai pu faire avec la boucle déterministe (for... in range). Il fonctionne très bien aussi.
Merci pour la précision sur les mots clé qui n'en sont pas, j'ai remplacé pour tester et en effet ça marche aussi bien.
Je vais essayer les autres encore.
Merci beaucoup pour cette aide, ça me fait avancer et je ne reste pas sur une déception.
A très bientôt !
Aide pourprogrammer le jeu à gratter
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Betsalel Lahoutou
Betsalel Lahoutou
Betsalel Lahoutou
Betsalel Lahoutou
Betsalel Lahoutou
Betsalel Lahoutou