Probleme de python
Bonjour,
Mon programme pour faire une roulette ne marche pas . Il m'écrit tout le temps" vous avez perdu". Est-ce que vous savez pourquoi ?
Merci de la réponse
Mon programme pour faire une roulette ne marche pas . Il m'écrit tout le temps" vous avez perdu". Est-ce que vous savez pourquoi ?
from lycee import * import random sous = 100 while sous > 0: a = demande("combien veux-tu miser ?") sous = sous - a print("sous=", sous) f = demande("quel numéro choisis-tu (entre 1 et 10) ?") numéros = ('1', '2', '3', '4', '5', '6', '7', '8', '9', '10') if f == random.choice(numéros): print("Vous avez gagné") sous = sous + 2 * a else: print("Vous avez perdu")
Merci de la réponse
A voir également:
- Probleme de python
- Citizen code python avis - Accueil - Outils
- Mot secret python pix ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
- Exercice python - Forum Python
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
Bonjour,
Peux-tu utiliser les balises de code quand tu partages du code?
Explications: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
pour comprendre ton code, teste celui-ci:
Peux-tu utiliser les balises de code quand tu partages du code?
Explications: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
pour comprendre ton code, teste celui-ci:
numero = '1' if numero == 1: print("test ok") else: print ("test nok")
Bonjour,
Pour voir le contenu des variables il faudrait faire des print intermédiaires, c'est ainsi que l'on voit ce qui se passe.
Après ta bibliothèque
La fonction standard
Après, il y a les probabilités, on a à chaque tour 1 chance sur 10, tu devrais réduire numéros à 1,2,3 ; c'est plus facile à tester
Pour voir le contenu des variables il faudrait faire des print intermédiaires, c'est ainsi que l'on voit ce qui se passe.
Après ta bibliothèque
lyceen'est pas standard, on ignore ce qu'il y a dedans, mais on peut entrevoir un soucis : ta fonction
demande().
La fonction standard
inputrenvoie une chaîne, or
demande()est utilisée pour initialiser
aqui est visiblement une valeur numérique. Or si
fest un entier, tu le compares à un numéro (par exemple
1) qui est pris parmi un ensemble de chaines de caractère (par exemple
'1'). Donc il ne peuvent jamais être égaux.
import random sous = 100 while sous > 0: a = int(input("combien veux-tu miser ?")) sous = sous - a print("sous=", sous) f = input("Quel numéro choisis-tu (entre 1 et 10) ?") numéros = ('1','2','3','4','5','6','7','8','9','10') j = random.choice(numéros) print(f, j) if f == j: print("Vous avez gagné") sous = sous + 2 * a else: print("Vous avez perdu")
Après, il y a les probabilités, on a à chaque tour 1 chance sur 10, tu devrais réduire numéros à 1,2,3 ; c'est plus facile à tester
Bonjour,
Pour reformuler et compléter ce qui a déjà été dit :
1) Il faut contrôler le type de
2) Comme le soulignes jee pee, au delà du code, il faut bien voir que tu n'as qu'une chance sur 10 de gagner, et comme ton programme n'indique pas quel numéro il fallait choisir, c'est peut être juste que tu n'as pas de chance... Donc à ta place, je changerais la dernière instruction par :
... par :
Autres conseils :
Bonne chance
Pour reformuler et compléter ce qui a déjà été dit :
1) Il faut contrôler le type de
f(par exemple avec
print(type(f))). Vu que c'est probablement une valeur numérique (e.g. un
int), tu le compares au résultat de
random.choicequi te retourne un élément parmi des chaînes de caractères. Or en python (et dans la très grande majorité des langages de programmation), une valeur numérique et sa représentation sous forme de chaîne de caractère sont différents (donc en Python,
"1" != 1).
2) Comme le soulignes jee pee, au delà du code, il faut bien voir que tu n'as qu'une chance sur 10 de gagner, et comme ton programme n'indique pas quel numéro il fallait choisir, c'est peut être juste que tu n'as pas de chance... Donc à ta place, je changerais la dernière instruction par :
if f == random.choice(numéros): print("Vous avez gagné") sous = sous + 2 * a else: print("Vous avez perdu")
... par :
r = random.choice(numéros) if f == r: print("Vous avez gagné") sous = sous + 2 * a else: print("Vous avez perdu") print(f"Vous avez proposé {f}, il fallait deviner {r}")
Autres conseils :
- Utilise toujours 4 espaces par tabulation (pas 5 puis 3 comme tu l'as fait).
- Utilise des variables dont le nom est parlant (par exemple
a
pourrait être renommémise
) - Prends les bonnes habitudes pour "écrire" proprement : essaye de suivre les convention PEP8 pour écrire ton code (espace autours des opérateurs, ...)
- Évite les caractères spéciaux pour nommer tes variables (renomme
numéros
ennumeros
) cela peut poser problème, surtout si tu ne mets pas en début de fichier les lignes permettant l'utilisation de caractères spéciaux dans le code.
Bonne chance