Dans cet article, vous allez je l'espère réaliser votre premier programme par vous-même : un jeu de morpion en console, contre l'ordinateur. Cet exercice est destiné aux débutants, et je vous conseille d'essayer de le réaliser sans regarder les éléments de correction, et si jamais vous bloquez vraiment, d'éventuellement jeter un coup d'œil à la correction.
Pour réaliser cet exercice, vous aurez besoin de connaître les listes, les conditions, les boucles, et les fonctions. Si jamais vous avez suivi la formation du site, nous n'avons pas encore parlé des fonctions. Je vais donc en parler rapidement afin que vous puissiez comprendre comment les utiliser.
Une fonction est un peu une sorte de sous-programme écrit dans votre programme. Cela vous permet d'écrire du code que vous pourrez répéter facilement dans votre programme et en y passant des paramètres. Imaginons par exemple que souhaitez programmer un jeu de morpion (tiens tiens…). Vous aimeriez sûrement vérifier à chaque fin de tour d'un joueur si la partie est gagnée, ou terminée si jamais toutes les cases du morpion sont remplies. Vous allez sûrement écrire le même code à deux endroits différents, puisqu'il faut vérifier cela à la fin du tour du joueur 1, mais aussi à la fin du tour du joueur 2. Il est donc judicieux d'écrire une fonction, puisque cela va vous permettre d'écrire votre code une fois, et d'appeler votre fonction partout où vous aurez besoin de vérifier cela.
Ensuite, il faut savoir qu'on peut également passer des paramètres à une fonction. Par exemple, je peux écrire une fonction pour afficher le prénom d'une personne. Pour cela, je passe le prénom en paramètre de la fonction plutôt que de modifier mon code à chaque fois que je souhaite afficher un autre prénom.
Finalement, une fonction peut soit renvoyer une valeur, soit ne rien renvoyer.
En Python, on utilise le mot-clé def
pour déclarer une fonction. Voici donc la syntaxe : def nom_fonction(parametre1, parametre2, ...):
. Ensuite, on écrit le code de notre fonction, sans oublier l'indentation (les espaces / la tabulation, pour ceux qui auraient oublié). On peut également préciser des valeurs par défaut pour les paramètres. Attention cependant, les paramètres dont vous souhaitez préciser une valeur par défaut doivent être placés après les paramètres n'ayant pas de valeur par défaut lors de la déclaration de la fonction.
>>> def dire_bonjour(prenom, age=43"):
... print("Bonjour "+prenom+". Vous avez "+age+"ans.")
...
>>> dire_bonjour("Jean", 48)
Bonjour Jean. Vous avez 48 ans.
>>> dire_bonjour("Jacques")
Bonjour Jacques. Vous avez 43 ans
Si on souhaite écrire une fonction renvoyant une valeur, on utilise le mot-clé return
dans le corps de notre fonction.
>>> def addition(a, b):
... return a + b
>>> addition(2, 5)
7
Evidemment, les fonctions sont des objets très complexes en Python, et il y a bien plus de choses à savoir sur elles. Cependant, dans le cadre de cet exercice, ce qui est plus haut est largement suffisant, nous verrons le reste plus tard !
En Python, vous avez la possibilité d'importer ce qu'on appelle des packages, c'est à dire des bouts de code créés par d'autres utilisateurs, ce qui vous permet d'utiliser des fonctions et des objets sans avoir à les réécrire, si jamais quelqu'un l'a déjà fait. Par exemple, vous souhaitez calculer la racine carrée d'un nombre. Vous pouvez importer le package math
, qui contient la fonction sqrt(x)
, fonction qui vous renvoie la racine carrée de x
.
Pour importer un package, on utilise le mot-clé import
suivi du nom du package.
import math
Ensuite, pour utiliser un objet, une fonction, ou n'importe quel élément du package, on utilise .
suivi de son nom.
>>> import math
>>> math.sqrt(16)
4
On peut aussi importer des éléments d'une autre façon : en utilisant from
, cela permet de spécifier ce que l'on souhaite importer. Par exemple, ci-dessus, en important le package math
, j'importe tout ce qu'il contient. En utilisant from
, je peux décider d'importer seulement ce dont j'ai besoin, par exemple sqrt
. Cependant, cette méthode modifier l'espace de nom, c'est à dire je n'ai plus besoin de préciser que sqrt
vient du package maths
. En utilisant cette méthode, je peux même importer sqrt
avec un nom différent, en utilisant le mot-clé as
.
>>> from math import sqrt
>>> sqrt(16) # Et non math.sqrt(16)
4
>>> from math import exp as exponentielle
>>> exponentielle(3)
20.085536923187668
Autre chose à savoir également, même si ce n'est pas nécessaire dans le cadre de l'exercice : on peut séparer notre code en plusieurs fichiers et importer du code de nos propres fichiers de la même façon que ci-dessus. Par exemple, on crée un ficher foo.py
dans lequel on écrit une fonction dire_bonjour
. Si ce fichier est situé au même endroit que votre fichier main.py
dans votre projet, vous pouvez écrire import foo
et utiliser votre fonction dire_bonjour
dans le fichier main.py
de cette façon : foo.dire_bonjour()
. Si jamais foo.py
est situé dans un répertoire, à la place vous écrirez import nom_du_repertoire.foo
, et nom_du_repertoire.foo.dire_bonjour()
pour exécuter votre fonction.
On va maintenant pouvoir commencer l'exercice. Tout d'abord, il faut commencer par définir clairement l'énoncé.
board = [
"X", "", "O",
"", X"", "O",
"", "", ""
]
# Ou bien :
board = {
1: "X", 2: "", 3: "O",
4: "", 5: "X", 6: "O",
7: "", 8: "", 9: ""
}
randint(a, b)
du package random
, qui permet de générer un entier entre a
et b
(inclus).Vous avez maintenant tous les éléments nécessaires pour réussir à programmer ce jeu ! Si jamais vous êtes bloqués, essayez de revenir sur les articles précédents pour réviser les notions qui bloquent avant de regarder les éléments de correction, il n'y a rien de mieux pour s'entrainer que d'essayer de faire ceci sans la correction.
Vous êtes bloqués ? Retrouvez ici quelques éléments pour vous aider à avancer, sans réellement spoiler toute la correction !
Voilà, c'est tout pour ce petit exercice, qui vous aura permis de vous entrainer un peu avant de passer à la suite. Pour ceux qui n'auraient pas réussi, l'essentiel est de bien comprendre la correction. Vous pouvez aussi réviser un peu en repassant sur les précédents articles : Introduction, Syntaxe et Fonctions de base et Listes et Dictionnaires.
Si vous avez des questions, ou que vous avez besoin de précisions sur la correction ou sur l'exercice, n'hésitez-pas à laisser un commentaire, ou bien contactez-moi par mail : contact@propython.fr.
Merci à tous d'avoir lu, on se retrouve prochainement pour la suite de votre apprentissage de Python !