Mise à jour du Python

This commit is contained in:
Shadow 2019-11-27 17:48:10 +01:00
parent 701afcc09b
commit 98adce3cda
1 changed files with 21 additions and 7 deletions

View File

@ -34,6 +34,7 @@
:here: Exercice n°7 : [target=Exo_7]Pythagore et justification[/target]
:here: Exercice n°8 : [target=Exo_8]Le nombre mystère[/target]
:here: Exercice n°9 : [target=Exo_9]Ce nombre est-il premier ?[/target]
:here: Exercice n°10 : [target=Exo_10]Un nouvel objet![/target]
[label=I][big][maroon][b]I - Présentation du langage Python[/b][/maroon][/big]
@ -634,7 +635,7 @@ def mystere: // on définit une fonction mystere
— — — print(joueur,"est trop grand")
— — else:
— — — print(joueur,"est trop petit")
— — joueur=int(input"Entrez un nombre"))
— — joueur=int(input("Entrez un nombre"))
— print(" Bravo !! vous avez gagné en",score,"coup(s)") // On lui dit quand il a gagné et on donne le nombre de coup
[/code]
Nb : si le joueur trouve du premier coup, il a joué une fois (d'où le score initialisé à 1) et la boucle `while` est zappée car la condition n'est pas vérifiée...
@ -661,9 +662,11 @@ def testNbr(test): // on définit notre fonction avec le nombre à tester comme
[label=VI][maroon][b][big]VI - Initiation à la programmation orientée objet[/big][/b][/maroon]
Ce tutoriel a fait le tour des principales fonctions du Python. Si vous vouliez simplement apprendre les bases, c'est fait ! Maintenant, cette partie s'adresse aux plus acharnés, mais aussi au plus curieux ! Venez donc repousser vos limites en programmation en vous lançant dans la programmation orientée objet ! Néanmoins, avant de vous lancer à corps perdu dans cet environnement fantastique, assurez vous de parfaitement maîtriser les bases ! ;)
Ce tutoriel a fait le tour des principales fonctions du Python. Si vous vouliez simplement apprendre les bases, cest fait ! Maintenant, cette partie sadresse aux plus acharnés, mais aussi, et surtout aux plus curieux ! Venez donc repousser vos limites en programmation en vous lançant dans la programmation orientée objet ! Néanmoins, avant de vous lancer à corps perdu dans cet environnement fantastique, assurez-vous de parfaitement maîtriser les bases !)
Le Python est un langage orienté objet. Cela induit certaines choses dont je veux vous parler. Un objet est un mot général qui est plus ou moins équivalent de type de variable. Nous avons vu les `int()` pour les nombres entiers ou encore les `float()` pour les décimaux, en fait, il existe d'autres types de variables comme `str()` ou encore `list()`. Ces objets (ou ces variables de différent types) ont des caractéristiques : il y a des manipulations que l'on peut faire avec une chaîne de caractères et pas avec un nombre entier, tout simplement parce que ce n'est pas le même objet. On peut, en fonction de l'objet, attribuer des fonctions à tel ou tel objet, ces fonctions sont appelées méthodes. On note cela comme ça : `objet.méthodes()`. Cette définition n'est pas complète car il manque la notion de classes qui viendra lorsque nous arriverons (si on y arrive >_<' ) à la partie programmation des objets… Ne dites ne rien… Si si si, vous allez coder des objets ! Mais si vous allez voir c'est rigolo.
Le Python est un langage orienté objet. Cela induit certaines choses dont je veux vous parler. Un objet est un mot général qui désigne plusieurs choses : un objet peut être le type dune variable. Dans le cas : `a = 4` `int` est le type de `a` et est un objet. Mais `4` par son statut de `int` est objet aussi ! Autres exemples. `Liste = [2,3]` `[2,3]` est un objet.
Ces objets ont des caractéristiques : il y a des manipulations que lon peut faire avec une chaîne de caractères et pas avec un nombre entier, tout simplement parce que ce nest pas le même objet. On peut, en fonction de l'objet, attribuer des fonctions à tel ou tel objet, ces fonctions sont appelées méthodes. On note cela comme ça : `objet.méthodes()`. Cette définition n'est pas complète car il manque la notion de classes qui viendra lorsque nous arriverons (si on y arrive >_<' ) à la partie programmation des objets… Ne dites ne rien… Si si si, vous allez coder des objets ! Mais si vous allez voir c'est rigolo.
On va essayer de clarifier tout ça : un objet est un type de variable. Chaque objet possède des méthodes différentes. Les méthodes sont des fonctions spécifiques à l'objet. Exemple : l'objet `list()` a une méthode nommée `append()` qui permet d'ajouter un élément à la liste. Le nom de la liste va venir remplacer le mot "objet" que j'avais pris dans ma notation tout à l'heure. Et `append()` est l'attribut. Donc pour appeler l'attribut `append()` sur une `list()` il faut faire comme ça :
`>>> a = [0, 1, 2]
@ -693,14 +696,14 @@ La fonction vous renvoie en fait l'indice de la première occurence de la chaîn
La différence entre `index()` et `find()` est que si la lettre ou le mot recherché n'est pas dans la chaîne, `find()` renvoie proprement un `-1` là où `index()` vous expédie dans les roses avec une erreur… (ValueError)
Je ne vous fait pas voir `rfind()` qui est la même chose que `find()` mais qui prend la chaîne à l'envers : la fonction prend le dernier indice comme 0.
Je ne vous fais pas voir `rfind()` qui est la même chose que `find()` mais qui prend la chaîne à l'envers : la fonction prend le dernier indice comme 0.
Pour trouver le nombre de fois qu'un caractère ou un mot apprait dans une chaîne, l'attribut est `count()` :
`>>> a.count("t")
2`
Il y a bien deux "t" dans la chaîne "test".
Un autre attibut utile peut être `replace()` qui permet de changer un caractère pour un autre par exemple :
Un autre attribut utile peut être `replace()` qui permet de changer un caractère pour un autre par exemple :
`>>> a.replace("t", "a")
aesa`
Donc replace permet de remplacer un caractère par un autre dans une chaîne. Le premier argument est le caractère à rechercher et le second argument est le caractère à mettre à la place de celui recherché.
@ -719,11 +722,11 @@ Et c'est bon ! Je vous rappelle que `range()` prend trois arguments : `range(<mi
Si l'on demande la valeur de `a` dans le shell, celui-ci va nous répondre :
`>>> a
[0, 0, 0, 0, 0]`
On va commencer par un exemple simple : si je veux ajouter un élément à ma liste, plutôt que de faire des manipulations compliquées, je vais tout simplement utiliser la méthode `append(<élément>)`. Essayons donc :
On va commencer par un exemple simple : si je veux ajouter un élément à ma liste, plutôt que de faire des manipulations compliquées, je vais tout simplement utiliser la méthode `append(<élément>)`. Essayons donc :
`>>> a.append(1)
>>> a
[0, 0, 0, 0, 0, 1]`
La liste a contient maintenant 6 éléments.
La liste a contients maintenant 6 éléments.
La méthode que nous allons voir fait l'inverse : elle supprime la première occurence d'un terme donné dans la liste donnée en objet. Exemple, reprenons notre liste `a` :
`>>> a.remove(1)
@ -814,5 +817,16 @@ Si on reprend notre exemple, `self` est mis en italique :
Le fait de mettre `self` dans les arguments permet au programme davoir accès aux méthodes de lobjet ce qui est indispensable.
[label=Exo_10][i][u]Exercice n°10 : Un nouvel objet ![/u][/i]
Bon maintenant, vous avez toutes les cartes en main pour réaliser un exercice dune autre envergure ! Vous allez réaliser un code qui crée lobjet `fonction` cet objet se comportera comme une fonction : on pourra lui assigner une expression avec des `x` et calculer la valeur de la fonction pour un x donné.
[spoiler=Solution|Exercice n°10 : Un nouvel objet !]
[code]class fonction()://on définit une classe, un nouveau type de variable quoi
— def __init__(self):
— — self.expr = «x» //on crée une méthode-variable qui est une chaîne de caractère contenant lexpression de la fonction
— — return None
— def enter(self, a)://rn initialise lexpression de la fonction avec la chaîne donnée en argument.
— — self.expr = a
— def calc(self, n)://on remplace x par sa valeur dans lexpression de la fonction et retourne lévaluation de la chaîne sous forme de nombre flottant.
— — return float(eval(self.expr.replace(«x», str(n))))[/code]
[/spoiler]