J'ai un petit problème avec ce code consacré à un jeu de devinette. En fait Si le nombre saisi correspond au nombre tiré au hasard dans "secret", on affiche " Gagné en x essais" (x = nombre d'essais). Si le nombre saisi est supérieur au nombre tiré au hasard dans "secret", on affiche: "Trop grand" et si le nombre saisi est plus petit que le nombre tiré au hasard dans "secret", on affiche : "Trop petit". Si on n'a pas gagné, on a au maximum 6 essais. Après le 6ème essai, il est affiché : "Perdu, le secret était: y", y étant le nombre qui devrait être tiré dans secret. Voici le code que j'ai écrit:
import random NB_ESSAIS_MAX = 6 #Nombre maximum d'essais autorisés en cas d'échecs secret = random.randint(0, 100) nb_essai = 0 nombre = int(input()) for i in range(secret): nb_essai = nb_essai + 1 if nombre == secret: print("Gagné en", nb_essai, "essais !") elif nombre != secret: nb_essai = NB_ESSAIS_MAX if nombre > secret: print("Trop grand") nombre = int(input()) elif nombre < secret: print("Trop petit") nombre = int(input()) else: print("Perdu ! Le secret était", secret)
Le problème que j'ai est que:
le message "Perdu, le secret était: y" ne s'affiche pas même après 6 tentatives infructueuses.
c'est parce que ton code traduit en français ne fait pas ce que tu as dit en français.
une autre manière de le dire:
tant qu'il reste des essais, demander un nombre; si le nombre est plus petit ou plus grand que secret alors l'indiquer et retirer un essai, s'il est égal à secret alors l'indiquer et quitter.
ça risque d'être compliqué de t'aider si nous n'avons pas les mêmes indentations que dans ton code :/ (si c'est cette indentation de code que tu as, ça ne peut pas bien fonctionner) Corrige ça dans ton post si possible Sinon ta boucle for doit être faite par rapport à NB_ESSAIS_MAX et non pas secret (for i in range(NB_ESSAIS_MAX): ); et dans cette boucle, il ne devrait y avoir qu'un seul appel à input()
Après, je ne comprends pas pourquoi tu donnes à nb_essai la valeur NB_ESSAIS_MAX quand le nombre entré est différent de secret.
Merci de vos orientations. J'ai repris le code et j'ai obtenu de meilleurs résultats, mais il y a une dernière chose qui me bloque: l'affichage du résultat après les 6 essais infructueux ("Perdu ! Le secret était"...). Voici le code:
import random NB_ESSAIS_MAX = 6 #Nombre maximum d'essais autorisés en cas d'échecs secret = random.randint(0, 100) nb_essai = 0 while nb_essai != NB_ESSAIS_MAX: nombre = int(input()) nb_essai = nb_essai + 1 if nombre != secret: if nombre > secret: print("Trop grand") elif nombre < secret: print("Trop petit") print("Perdu ! Le secret était", secret) ## C'est cet affichage que n'arrive pas à effectuer else: print("Gagné en", nb_essai, "essais !")
J'espère que vous pouvez m'aider à trouver la solution.
- Edité par SalifSeyd 16 septembre 2020 à 20:31:31
import random
NB_ESSAIS_MAX = 6 #Nombre maximum d'essais autorisés en cas d'échecs
secret = random.randint(0, 100)
nb_essai = 0
while nb_essai != NB_ESSAIS_MAX:
nombre = int(input())
nb_essai = nb_essai + 1
if nombre != secret:
if nombre > secret:
print("Trop grand")
elif nombre < secret:
print("Trop petit")
else:
print("Gagné en", nb_essai, "essais !")
break # quitter
# ici faire un teste pour savoir si on a quitté la boucle parce qu'il n'y a plus d'essai,si oui faire le print
# il y a deux façons de faire
#print("Perdu ! Le secret était", secret)
Josmiley, merci pour la proposition. J'ai pu aussi faire autrement en mettant "if nombre == secret" en premier. Le résultat est quasiment bon. Voici le code:
import random NB_ESSAIS_MAX = 6 secret = random.randint(0, 100) nb_essai = 0 while nb_essai != NB_ESSAIS_MAX: nombre = int(input()) nb_essai = nb_essai + 1 if nombre == secret: print("Gagné en", nb_essai, "essais !") elif nombre != secret: if nombre > secret: print("Trop grand") elif nombre < secret: print("Trop petit") print("Perdu ! Le secret était", secret)
Voici ce que ça donne:
50 Trop petit 24 Trop petit 37 Trop petit 43 Trop petit 40 Trop petit 41 Trop petit Perdu ! Le secret était 94
Le dernier problème que j'ai, c'est d'afficher le dernier nombre sans afficher "Trop petit" ou "Trop grand" avant "Perdu ! Le secret était...". Voici une exemple de ce que je souhaite:
50
Trop grand
24
Trop petit
37
Trop petit
43
Trop grand
40
Trop petit
41
Perdu ! Le secret était 42
- Edité par SalifSeyd 16 septembre 2020 à 21:47:14
import random
NB_ESSAIS_MAX = 6 #Nombre maximum d'essais autorisés en cas d'échecs
secret = random.randint(0, 100)
nb_essai = 0
while nb_essai != NB_ESSAIS_MAX:
nombre = int(input())
nb_essai = nb_essai + 1
if nombre != secret:
if nombre > secret:
print("Trop grand")
elif nombre < secret:
print("Trop petit")
else:
print("Gagné en", nb_essai, "essais !")
break # quitter
# ici faire un teste pour savoir si on a quitté la boucle parce qu'il n'y a plus d'essai,si oui faire le print
# il y a deux façons de faire
#print("Perdu ! Le secret était", secret)
- Edité par josmiley il y a environ 13 heures
je pense que ta ligne if nombre!=secret est en trop (ça va être compliqué de gagner ainsi )
Voici le code qui marche à peu près. Ce que je souhaite, c'est que "Trop grand" ou "Trop petit" ne s'affiche pas à la 6ème entrée infructueuse. Le seule message qui doit s'afficher après la sixième entrée fausse est : "Perdu ! Le secret était ..."
import random NB_ESSAIS_MAX = 6 secret = random.randint(0, 100) nb_essai = 0 while nb_essai != NB_ESSAIS_MAX: nombre = int(input()) nb_essai = nb_essai + 1 if nombre == secret: print("Gagné en", nb_essai, "essais !") elif nombre != secret: if nombre > secret: print("Trop grand") elif nombre < secret: print("Trop petit") print("Perdu ! Le secret était", secret)
- Edité par SalifSeyd 17 septembre 2020 à 18:21:45
un copier/coller dans la fenêtre qui s'ouvre en cliquant sur le bouton </> (en choisissant python dans la liste), ça devrait marcher, sinon rajouter manuellement en tapant 4 espaces pour une indentation(un peu fastidieux j'admets)
Voici le code qui marche à peu près. Ce que je souhaite, c'est que "Trop
grand" ou "Trop petit" ne s'affiche pas à la 6ème entrée infructueuse.
Le seule message qui doit s'afficher après la sixième entrée fausse est :
"Perdu ! Le secret était ..."
import random
NB_ESSAIS_MAX = 6
secret = random.randint(0, 100)
nb_essai = 0
while nb_essai != NB_ESSAIS_MAX:
nombre = int(input())
nb_essai = nb_essai + 1
if nombre == secret:
print("Gagné en", nb_essai, "essais !")
elif nombre != secret:
if nombre > secret:
if nb_essai <6 :
print("Trop grand")
else:
print(end='')
elif nombre < secret:
if nb_essai <6 :
print("Trop petit")
else:
print (end='')
print("Perdu ! Le secret était", secret)
- Edité par SalifSeyd 17 septembre 2020 à 19:48:45
à la place du elif nombre != secret: je mettrais alors elif nb_essai<NB_ESSAIS_MAX:
import random
NB_ESSAIS_MAX = 6
secret = random.randint(0, 100)
nb_essai = 0
while nb_essai != NB_ESSAIS_MAX:
nombre = int(input())
nb_essai = nb_essai + 1
if nombre == secret:
print("Gagné en", nb_essai, "essais !")
break #il ne faut pas oublier de quitter quand on a gagné
elif nb_essai < NB_ESSAIS_MAX:
if nombre > secret:
print("Trop grand")
elif nombre < secret:
print("Trop petit")
else:
print("Perdu ! Le secret était", secret)
à la place du elif nombre != secret: je mettrais alors elif nb_essai<NB_ESSAIS_MAX:
import random
NB_ESSAIS_MAX = 6
secret = random.randint(0, 100)
nb_essai = 0
while nb_essai != NB_ESSAIS_MAX:
nombre = int(input())
nb_essai = nb_essai + 1
if nombre == secret:
print("Gagné en", nb_essai, "essais !")
break #il ne faut pas oublier de quitter quand on a gagné
elif nb_essai < NB_ESSAIS_MAX:
if nombre > secret:
print("Trop grand")
elif nombre < secret:
print("Trop petit")
else:
print("Perdu ! Le secret était", secret)
Ce code là marche effectivement. Merci.
jeu de devinette
× 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.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.