Je m’attaque à un nouveau programme : celui du jeu du Pendu. Vous savez, ce jeu où l’on doit retrouver un mot en le découvrant une lettre après l’autre avant d’être « pendu »…
Jeu du Pendu
Dans l’énoncé de l’exercice, il y a beaucoup de paramètres à prendre en compte. Et tous doivent être exécutés dans le bon ordre pour que le programme marche correctement !
Souvenez-vous… J’avais partagé avec vous mon premier TP : le programme d’un jeu de roulette – le ZCasino.
Il s’avère que mon programme est facilement « plantable »… Et sur de nombreux points en plus ! 😮
Alors voici les remarques et ma résolution de problème (ou plus simplement ma correction !).
Au départ, j’ai une erreur lorsque je ne tape pas un entier alors que le programme en attend un.
La gestion des paris négatifs n’est pas prise en compte… Du coup, je perds mais je gagne !
Si je mise plus d’argent que je n’en ai apporté, je me retrouve à découvert !
Miser sur un numéro négatif est permis…
Dans mon programme, je n’ai pas mis de conditions sur mes différentes variables pour vérifier qu’elles étaient bien des chiffres valables. De plus, je me suis rendu compte qu’il ne faut pas oublier de mettre une boucle pour que la condition se répète jusqu’à ce que l’utilisateur tape la valeur attendue.
Il est donc vraiment important de toujours vérifier son code. Dans tous les sens, même si on se dit que cela ne pourra jamais arriver.
Parce que si, tout est possible !
Alors, prenez le temps de tester et retester votre code. Et surtout, soumettez le à une tierce personne, ou plusieurs. Car elle(s) sera(seront) bien plus maligne(s) que vous pour trouver comment faire planter votre programme !
Merci Romain 😉
Je vous mets ci-dessous mon code corrigé si vous souhaitez l’essayer 🙂
# ****** programme du jeu de la roulette **********
print("Bienvenue au ZCasino, voici le jeu de la Roulette !")
import random
import math
# Somme disponible au départ
a = input("\nAvec quelle somme d'argent souhaitez vous jouer ? ")
while type(a) != int:
try:
int(a) == True
except ValueError:
print("Il y a une erreur, êtes vous certain de votre frappe ?")
a = input("Avec quelle somme d'argent souhaitez vous jouer ? ")
else :
a = int(a)
if a < 1 :
print("Vous ne pouvez pas jouer sans argent !")
a = input("Avec quelle somme d'argent souhaitez vous jouer ? ")
# début du jeu
j=1
while j != 0 :
# numéro choisi par le joueur
num_joueur = input("\nSur quel numéro souhaitez vous miser (entre 0 et 49) ? : ")
while type(num_joueur) != int:
try:
int(num_joueur) == True
except ValueError:
print("Il y a une erreur, êtes vous certain de votre frappe ?")
num_joueur = input("Sur quel numéro souhaitez vous miser (entre 0 et 49) ? : ")
else :
num_joueur = int(num_joueur)
if num_joueur < 0 or num_joueur > 49:
print("Le numéro choisi n'existe pas, veuillez en choisir un autre !")
num_joueur = input("Sur quel numéro souhaitez vous miser (entre 0 et 49) ? : ")
# choisir sa mise
mise = input("\nQuelle somme souhaitez vous miser sur ce numéro ? : ")
while type(mise) != int :
try:
int(mise) == True
except ValueError :
print("Etes vous certain de votre frappe ?")
mise = input("Quelle somme souhaitez vous miser sur ce numéro ? : ")
else :
mise = int(mise)
if mise <0:
print("Vous ne pouvez pas miser un nombre négatif !")
mise = input("Quelle somme souhaitez vous miser sur ce numéro ? : ")
elif mise >a:
print("Vous n'avez pas assez d'argent !")
mise = input("Quelle somme souhaitez vous miser sur ce numéro ? : ")
print("\n Votre mise est de ", mise, "$ sur le numéro ", num_joueur, "\n")
# lance la roulette
print("A vos jeux... La roulette est lancée... \n")
jeu=random.randrange(50)
print("Le numéro gagnant est le numéro ", jeu)
# résultats et gains
if jeu != num_joueur :
if (jeu %2 == 0 and num_joueur %2 == 0) or (jeu %2 != 0 and num_joueur %2 != 0):
gain = math.ceil(mise * 0.5)
print("\n Vous avez misé sur la bonne couleur, vous gagnez ", gain, "$")
a = a + gain
else:
gain = 0
print("\n Loupé, Vous venez de perdre votre mise !")
a = a - mise
else:
gain = 3 * mise
print("\n Votre gain est de 3 fois votre mise, soit ", gain, "$")
a = a + gain
print("Il vous reste donc ", a, " $ pour continuer de jouer.")
# possibilité de rejouer ou non
if a == 0:
print("\nVous n'avez plus d'argent ! Au revoir et à bientôt au ZCasino ")
j=0
else:
r=input(" Voulez vous rejouer ? (O / N) ")
if r == "O" or r == "o" :
j=1
else:
print("Au revoir et à bientôt au ZCasino ")
j=0
Je viens de me frotter aux listes… Et là, il y a de quoi faire ! On peut en créer de toutes sortes. Le plus important à retenir c’est qu’une liste est caractérisée par son index.
J’ai donc appris à créer une liste, à supprimer ou insérer des éléments. Et surtout, je sais enfin comment faire une recherche et modifier une liste !!! 😉
Je suis ensuite passée aux dictionnaires. Ils fonctionnent comme les listes, sauf qu’ils sont caractérisés par des mots clés et n’ont donc pas d’ordre précis. Ce qui rend les modifications et les recherches plus faciles : plus besoin de se souvenir de l’index de l’élément cherché, il suffit de passer par sa clé !
inventaire = [
("pommes", 22),
("melons", 4),
("poires", 18),
("fraises", 76),
("prunes", 51),
]
# met les quantités en premier
inventaire_trie = [(qte, fruit) for fruit, qte in inventaire]
print(inventaire_trie) # vérifie l'affichage
inventaire = inventaire_trie.sort(reverse = True) # trie dans l'ordre croissant
inventaire = [(fruit, qte) for qte, fruit in inventaire_trie] # remet la liste avec les fruits en premier
print(inventaire) # affiche le résultat final
Aujourd’hui, je viens de faire connaissance avec les objets…
Enfin, plutôt de découvrir qu’en langage Python il faut tout considérer comme étant « objets » (les chaines de caractères, les variables, les fonctions, etc.)
Et le top avec les objets c’est qu’on peut leur faire faire de nombreuses choses.
Les exemples sont nombreux ! Mettre en forme les chaines de caractères, les formater, les ajouter… On peut créer des listes, les parcourir ou sélectionner des éléments de cette liste… etc.
Bref, la découverte de Python est pleine de (bonnes) surprises. Et ces dernières permettront à coup sûr de réaliser des (petits) programmes intéressants !
En parlant de programme, vous vous demandez sûrement ce qu’il en est de mon projet perso ? Un peu de patience, j’ai des idées que je vous présenterai lorsque j’aurai mieux avancé dans mon apprentissage ! 🙂
L’apprentissage n’est pas un long fleuve tranquille… Et garder sa motivation est important pour continuer d’avancer !
Pas de nouveautés aujourd’hui. Juste de nombreux d’échecs qui, j’en suis sûre, vont me permettre de mieux avancer demain… Ce n’est pas évident de travailler seule, avec juste un cours sous les yeux. Car lorsque l’on ne comprend pas ce que l’on a sous les yeux, il faut s’armer de patience, chercher et rechercher pour arriver à trouver une solution.
Alors je vais illustrer ma journée grâce à cette citation de Winston Churchill :
Le succès c’est d’aller d’échec en échec sans perdre son enthousiasme.
Je viens de visionner la vidéo YouTube de @MikeCodeur intitulée « Ce que j’aurais aimé savoir quand j’ai débuté la programmation ».
C’est une super vidéo que je vous conseille d’aller voir. Pourquoi ? Car elle récapitule très bien les différents points sur lesquels réfléchir avant de se lancer tête baissée pour devenir développeur/euse !
Pour ma part, les points qu’aborde Mike m’ont fait réfléchir sur mon aventure. Et j’en suis venue à la conclusion que je pouvais continuer à apprendre à coder pour les raisons suivantes :
Au départ, j’ai réfléchi aux langages que je devais apprendre par rapport à ce qui est demandé sur le marché de l’emploi dans ma région.
Je n’ai pas peur de l’inconnu car je me suis lancée dans une aventure remplie de nouveautés… 😉
J’ai déjà réfléchi à un projet personnel (qui fera l’objet de futur(s) post(s) !) pour mettre en application tout ce que j’ai appris. 🙂
Je vais donc devoir travailler principalement sur deux points : – mon côté perfectionniste (car il est vrai que j’aime quand les choses sont bien faites !) – et ma peur de l’ennui (qui est ma principale appréhension pour l’avenir…).
Après avoir bien revu toutes les notions apprises hier, je me suis lancée… Heureusement, le cours est bien expliqué ! J’ai donc tout écrit sur une feuille pour mettre les idées au clair. C’est important de prendre le temps de bien tout décortiquer quand on est débutant ! Ça permet de moins galérer pour écrire le code.
Ensuite, je suis passée à la rédaction sur l’éditeur Python (IDLE). De façon simple dans un premier temps, en écrivant ou codant toutes les informations nécessaires : ce que doit renseigner le joueur, le déroulement du jeu, les façons de gagner (j’ai écrit en français ce que je n’arrivais pas à coder directement !).
Puis au fur et à mesure, j’ai enrichi mon code pour avoir mon premier programme !
Je l’ai testé et là… loupé ! Mon code ne fonctionnait pas… 🙁
À force de persévérance, j’ai fini par faire fonctionner mon programme. Youpi ! 🙂
Première étape réussie, j’en suis fière.
Je retiens
Lorsque l’on code un programme, il ne marche pas forcément du premier coup (surtout lorsqu’on est débutant !). Et c’est à force de tâtonner, de le modifier, de l’améliorer que l’on y arrive. Alors, il faut persévérer !
Je vous mets ci dessous mon code finalisé si vous souhaitez le tester ! 🙂
# ****** programme du jeu de la roulette **********
print("Bienvenue au ZCasino, voici le jeu de la Roulette !")
import random
import math
a = input("\nAvec quelle somme d'argent souhaitez vous jouer ? ")
a = int(a)
j=1
while j != 0 :
#num_joueur()
num_joueur = input("\nSur quel numéro souhaitez vous miser (entre 0 et 49) ? : ")
num_joueur = int(num_joueur)
# choisir sa mise
mise = input("Quelle somme souhaitez vous miser sur ce numéro ? : ")
mise = int(mise)
print("\n Votre mise est de ", mise, "$ sur le numéro ", num_joueur, "\n")
# lance la roulette
print("A vos jeux... La roulette est lancée... \n")
jeu=random.randrange(50)
print("Le numéro gagnant est le numéro ", jeu)
# gains
if jeu != num_joueur :
if (jeu %2 == 0 and num_joueur %2 == 0) or (jeu %2 != 0 and num_joueur %2 != 0):
gain = math.ceil(mise * 0.5)
print("\n Vous avez misé sur la bonne couleur, vous gagnez ", gain, "$")
a = a + gain
else:
gain = 0
print("\n Loupé, Vous venez de perdre votre mise !")
a = a - mise
else:
gain = 3 * mise
print("\n Votre gain est de 3 fois votre mise, soit ", gain, "$")
a = a + gain
print("Et vous avez au total ", a, " $")
# possibilité de rejouer ou non
if a == 0:
print("\nVous n'avez plus d'argent ! Au revoir et à bientôt au ZCasino ")
j=0
else:
r=input(" Voulez vous rejouer ? (O / N) ")
if r == "O" or r == "o" :
j=1
else:
print("Au revoir et à bientôt au ZCasino ")
j=0
Pourquoi ce choix de langage ? Déjà parce qu’en me lançant dans la programmation, j’ai recherché sur Internet les langages les plus demandés/en vogue/appris et Python est ressorti dans les premiers. Mon choix a été confirmé en discutant avec plusieurs personnes « de la partie »…
Et alors, commencer à apprendre Python, c’est comment ? Déjà, j’ai commencé par les bases : c’est un langage interprété (qui s’exécute en même temps qu’il est lu) et il a l’avantage de pouvoir être compris par la plupart des systèmes d’exploitation informatiques. En plus, son « écriture » est très codifiée, ce qui permet de programmer de façon très structurée et claire. À noter qu’il y a de nombreuses bibliothèques disponibles, ce qui devrait être très bénéfique pour la suite !
Ensuite, le début de l’apprentissage est facile. J’ai appris les éléments de bases qui vont me permettre d’écrire mon 1er programme…
La suite est à découvrir dans le(s) prochain(s) post(s) !
Le saviez-vous ?
Lorsque l’on commence à apprendre un langage, on débute bien souvent en écrivant un programme permettant d’afficher « Hello World »
Pour tout savoir sur « Hello World », direction Wikipédia qui explique rapidement le concept !
Mon code pour afficher « Hello World » dans la console Python