- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte personlive_helpToutes les questions
Simon
5 mars 2024 - 05 mars 2024 à 9:44
checkConversation résolue
2 réponses
Variables globales
Bonjour, dans le projet précédent (liste de courses), Thibault nous indiquait la bonne pratique qui consiste à saisir les variables globales entièrement en majuscules (c'est ce qu'il avait fait pour …
Issiaka
18 janvier 2024 - 18 janvier 2024 à 13:47
checkConversation résolue
8 réponses
bonjour. je voulais vous exposer ma version pour voir si elle est optimiser et ce que vous en pensee
```python import random print("""✨✨Jeux du nombre mistere✨✨ Entrer un nombre entre '0' et '100'""") i = 5 mistere = random.randint(1, 101) while i > 0: nbr = input(f"""Il te reste …
00:00:00 :Ensuite on va récupérer la saisie de l'utilisateur. Pour ça on va utiliser la fonction input qui nouspermet de demander la saisie d'un utilisateur et ça va nous retourner constamment une chaîne decaractère. Donc même si l'utilisateur rentre un nombre, il va falloir le convertir en nombre
00:00:15 :entier, donc en objet nombre entier, parce qu'on va avoir une chaîne de caractère avec la fonctioninput. Donc ce qu'on va devoir faire déjà c'est vérifier si l'utilisateur rentre bien un nombre.
00:00:25 :Pour ça on peut utiliser la méthode isDigit qui s'utilise sur une chaîne de caractère et qui nouspermet de vérifier si une chaîne de caractère ne contient que des chiffres. Donc là on va faire
00:00:35 :une structure conditionnelle puisque en fait on ne veut pas continuer le programme si l'utilisateurne rentre pas un nombre. Donc on va dire que si notUserChoice.isDigit, donc si UserChoice ici
00:00:46 :ne contient pas un nombre, et bien on va lui dire ici veuillez entrer un nombre valide et on vautiliser l'instruction continue. Continue, qu'est ce que ça fait ? En fait ça va passer tout ce qui
00:00:55 :est après dans ma boucle et ça va revenir au début de la boucle while. Alors attention à ne pas leconfondre avec break, break ça va sortir de la boucle. Donc si je mettais un break ici, si l'utilisateur
00:01:06 :ne rentre pas un nombre valide, et bien on sortirait directement de la boucle while. Là moi ce que jeveux c'est pas sortir de la boucle, c'est juste éviter de processer le reste puisque si en faitl'utilisateur ne rentre pas un nombre et qu'on utilise par la suite la fonction int ici pour
00:01:20 :convertir l'entrée de l'utilisateur en nombre mais qu'il rentre par exemple la lettre A, et bienon aurait une erreur. Donc il faut absolument être certain ici que l'utilisateur a bien rentré un
00:01:30 :nombre pour pouvoir continuer. Donc si ce n'est pas le cas on utilise cette instruction continuequi va tout simplement passer le reste du script ici et revenir au début de ma boucle while pourredemander une nouvelle fois à l'utilisateur de rentrer un nombre. Donc voilà pour cette structure
00:01:44 :conditionnelle if not userChoice.sdg donc si userChoice n'est pas un nombre et bien on continueet on revient au début de la boucle. Si l'utilisateur rentre bien un nombre on ne rentre donc pas dans
00:01:56 :cette structure conditionnelle ici et on continue et on va tout simplement écraser ce qu'il y avaità l'intérieur de userChoice par l'équivalent en nombre entier. Donc pour ça on utilise la
00:02:05 :fonction ici int qui est en fait une classe mais ne vous en faites pas avec ça je vais l'appelerfonction pour le reste de cette vidéo. Donc c'est en fait tout simplement une fonction qui nous
00:02:14 :permet de convertir ce qu'on a ici qui est une chaîne de caractère donc par exemple la chaînede caractère 50 si c'est ce nombre là que l'utilisateur avait rentré et bien on va pouvoirle convertir pour ne plus avoir une chaîne de caractère 50 mais pour bien avoir le nombre 50
00:02:28 :puisqu'après en fait on va vouloir comparer l'entrée de l'utilisateur avec un nombre et avecPython on ne peut pas comparer des objets qui ne sont pas du même type. Donc si on veut comparer
00:02:37 :un nombre avec un nombre il faut au préalable s'assurer que l'entrée de l'utilisateur ici estbien un nombre. Si on ne fait pas cette vérification ici qu'on enlève cette ligne et bien là on aura
00:02:46 :une erreur puisque Python va nous dire qu'il ne peut pas comparer des chaînes de caractère avecdes nombres. Donc bien faire attention de faire cette conversion ici. Ensuite on va rentrer dans
00:02:55 :une structure conditionnelle qui va nous permettre de vérifier si le nombre est plus petit, plusgrand ou égal au nombre mystère. Donc pour ça on va utiliser tout simplement les opérateurs de
00:03:04 :comparaison. On va avoir une première condition ici, number to find plus grand que user choice.Donc ça c'est si le nombre à trouver est plus grand que le nombre entré par l'utilisateur etbien on va tout simplement afficher la phrase le nombre mystère est plus grand que user choice.
00:03:18 :Là encore on utilise un fstring pour insérer à l'intérieur de ma chaîne de caractère le nombreque l'utilisateur a rentré. Le deuxième cas de figure et bien c'est tout simplement l'inverse,
00:03:27 :on va vérifier si number to find est plus petit que user choice. Donc si c'est le cas on vaindiquer que le nombre mystère est plus petit que user choice. Donc là rien de compliqué jusqu'à
00:03:36 :présent. Et le dernier cas de figure et bien c'est le cas de figure où les deux nombres sont égaux.Donc là on pourrait spécifier la condition, on pourrait dire elif number to find égal égal àuser choice. Ça pourrait être plus explicite de mettre ça, plus clair pour quelqu'un qui arrive
00:03:50 :dans notre script. Là dans ce cas-ci c'est assez clair de voir que s'il n'est pas plus grand ouplus petit il est forcément égal. Donc moi dans ce cas-ci je vais juste mettre un else qui va
00:03:59 :forcément considérer que les deux nombres sont égaux puisque s'il n'est pas plus grand ni pluspetit il est forcément égal. Donc là dans le else qu'est-ce que je fais ? Et bien tout simplement
00:04:07 :un break. Donc break comme je vous ai expliqué tout à l'heure ça nous permet de sortir de laboucle. Donc si le nombre est égal et bien on sort de la boucle et on arrive à la fin du script ici
00:04:16 :pour vérifier si l'utilisateur a gagné ou perdu et si oui en combien d'essais. Ce que je fais à lafin ici c'est tout simplement décrémenter remaining attempts. Donc là ce que je fais
00:04:27 :c'est "-=" 1", ce qui est équivalent à faire en fait tout simplement remaining attempts égaleremaining attempts moins 1. Donc c'est juste une façon plus rapide de l'écrire puisque là vous
00:04:36 :voyez qu'on répète deux fois le nom de la variable. Donc si on veut juste enlever 1 à cette variableon va faire remaining attempts moins égal 1. Notez que ça peut marcher avec n'importe quel
00:04:46 :opérateur. On pourrait faire plus égal, fois égal, divisé égal etc. Là dans ce cas-ci je veux enlever1 à cette variable ici donc je fais "-=" 1". Ça va me permettre tout simplement de décrémenter le
00:04:57 :nombre d'essais puisque si vous vous rappelez bien au-dessus la condition de la boucle c'est deboucler tant que remaining attempts est plus grand que 0. Donc si en fait on ne fait pas cette
00:05:06 :décrémentation ici, si on n'enlève pas 1 à cette variable et bien remaining attempts sera toujoursplus grand que 0 puisque on l'a défini à 5 ici. Donc 5 est plus grand que 0 et donc si on ne
00:05:17 :décrémente pas cette variable ici on va avoir une boucle qui ne se termine que quand l'utilisateuraura trouvé le nombre ici avec la condition else et le break. Donc il faut bien faire attention
00:05:26 :de décrémenter cette valeur pour que l'utilisateur n'ait que 5 essais de disponibles. Donc une foisqu'on sort ici en fait on va afficher si l'utilisateur a gagné ou perdu. Donc là en fait je vais tout
00:05:36 :simplement vérifier si remaining attempts est égal à 0 ou pas. Ça va me permettre de varier lemessage que je vais afficher à la fin puisque le fait de sortir de la boucle ne me dit pas sij'ai gagné ou perdu. En fait on peut sortir de la boucle soit parce qu'on a trouvé le nombre
00:05:50 :mystère donc avec la condition else ici, soit parce qu'on n'a plus d'essais et donc dans ce cas làon a perdu. Donc si remaining attempts est égal à 0 ça veut dire qu'on n'a plus d'essais de
00:06:00 :disponibles et donc on va afficher que le nombre mystère était égal au nombre à trouver, làencore avec un fstring, et on termine avec fin du jeu. Si par contre remaining attempts n'est pas
00:06:11 :égal à 0 donc ça veut dire qu'on va aller dans le else et ça veut dire qu'il est forcément plusgrand que 0. Donc s'il est plus grand que 0 et bien on affiche bravo le nombre mystère était
00:06:20 :bien et on affiche le nombre et là on va afficher le nombre d'essais que ça a pris en fait àl'utilisateur. Donc ce qu'on va faire ici c'est afficher 6 moins remaining attempts. Alors pourquoi
00:06:29 :6 ? Et bien parce que si je retourne ici au début on a remaining attempts qui est égal à 5. Imaginezque j'arrive ici et que directement l'utilisateur trouve le bon nombre donc imaginons que le nombremystère c'est 50. On arrive ici, on demande à l'utilisateur de rentrer un nombre et directement
00:06:46 :l'utilisateur trouve le nombre qui était le nombre mystère donc le nombre 50. Et bien dansce cas-ci on va directement passer sur le break et on ne va même pas enlever 1 à la variableremaining attempts donc ça veut dire que la variable remaining attempts sera toujours égale à 5. Donc
00:07:00 :quand on arrive ici remaining attempts sera égal à 5 dans le cas où l'utilisateur a trouvé lenombre du premier coup et donc si on veut dire qu'il a trouvé en un essai il faut faire 6 moins5 et ça nous donne bien 1. S'il trouve en deux essais et bien la variable sera égale à 4 donc
00:07:15 :on aura bien 6 moins 4 qui est égale à 2 et ainsi de suite. Donc c'est pour ça ici qu'on a mis 6 etpas 5. Si je mets 5, dès que l'utilisateur trouve le nombre, s'il le trouve dès le premier essai,
00:07:24 :on aura 5 moins 5 et ça va afficher 0. Nous c'est pas ce qu'on veut, on veut vraiment afficher 1s'il le trouve en un essai, 2 s'il le trouve en deux essais etc. Donc voilà pour la dernière
00:07:33 :condition ici avec remaining attempts qui est égale à 0 ou la condition else qui indique qu'ila gagné. Là alors vous pouvez faire en fait l'inverse si vous voulez, moi je trouve ça plus
00:07:42 :clair de mettre égal égal, on pourrait très bien faire l'inverse c'est à dire mettre différentsdeux 0 et mettre ces deux prints ici à l'intérieur de ce bloc et ce print ici à l'intérieur du else.
00:07:51 :Là c'est à vous de voir dans quel sens vous le faites. Là dans ce cas ci je vérifie que c'estégal à 0 donc si c'est égal à 0 c'est qu'on a perdu et si ce n'est pas égal à 0 c'est qu'on agagné. Là encore on pourrait être un peu plus explicite et faire un elif en disant que remaining
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.