Probleme de python
Fermé
loulou
-
Modifié le 25 nov. 2021 à 18:24
mamiemando Messages postés 33544 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 24 février 2025 - 25 nov. 2021 à 18:30
mamiemando Messages postés 33544 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 24 février 2025 - 25 nov. 2021 à 18:30
A voir également:
- Probleme de python
- Citizen code python avis - Accueil - Outils
- Trouver la position d'un élément dans une liste python ✓ - Forum Python
- Python generator - Télécharger - Sécurité
- Python retour à la ligne dans le code - Forum Python
3 réponses
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
Ambassadeur
1 568
Modifié le 25 nov. 2021 à 18:31
Modifié le 25 nov. 2021 à 18:31
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")
jee pee
Messages postés
40859
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
24 février 2025
9 541
Modifié le 25 nov. 2021 à 18:35
Modifié le 25 nov. 2021 à 18:35
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
mamiemando
Messages postés
33544
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
24 février 2025
7 828
Modifié le 25 nov. 2021 à 18:44
Modifié le 25 nov. 2021 à 18:44
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