Résumé et exercices programmation python

AideMemoirePython

Télécharger PDF

1- Types des données

➤ Types: bool (True ou False), int, float, str, tuple, list, dict, None

> type (var): type de var

> int (var), float (var), list (var): transtype var dans le type voulu

> isinstance (var, t): teste si le type de var est de type t

> id (var) : référence sur l'objet var

2- Opérateurs

2.1 - Opérateurs de calcul

> chaine - raw_input(msg): récupération d'une saisie clavier en chaine de caractères

> return var : renvoi d'une variable en retour de fonction

4- Structures

4.1 - Structure alternative

if conditionl : instructions si conditionl vraie

elif condition2 : instructions si conditionl fausse et condition2 vraie

else : instructions sinon (si conditions 1 et 2 fausses)

4.2-Boucle conditionnelle

while condition : instructions si condition vraie

4.3 - Boucle répétitive

for i in range (debut, fin, increment) : instructions

4.4 - Parcours itératif

for elm in sequence : instructions pour chaque elm

for (i, elm) in enumerate (sequence) : instructions pour chaque elm d'indice i

4.5- Fonction

def fonction( param1, param2 ) : instructions

- return resultat | None

5- Collections ordonnées

saisie-input (msg) récupération d'une saisie clavier avec typage des données

len(collection): nombre d'éléments d'une collection

collection[i]: élément d'indice i d'une collection

collection [i: j] : extrait d'une collection de l'indice i inclus à l'indice j exclus

min (collection) (resp. max (collection)): plus petit (resp. grand) élément de collection

sum (collection) somme des éléments d'une collection numérique

5.1- Chaines de caractères

n-chaine.count(sub): nombre d'occurrences de sub présentes dans chaine

chaine.startswith( prefix ) (chaine. endswith( subfix )): teste si chaine commence (finit) par prefix (subfix)

i-chaine.find( sub): indice du caractère où débute (pour la 1ère fois) sub dans chaine

res - chaine.replace (old, new) : chaîne obtenue en remplaçant toutes les occurrences de old par new

res - chaine. upper () : chaîne en majuscule

res - chaine. lower () : chaîne en minuscule

liste - chaine.split( sep): liste de chaînes de caractères, obtenue en coupant chaine suivant le séparateur sep

car.join(liste): chaîne obtenue concaténant les chaînes de liste, toutes séparées par car

5.2-Listes

Déclaration : [elm1, elm2, ..., elmN]

liste.append(elm): ajoute elm à la fin de liste

liste.insert(i, elm) : insère elm dans liste à l'index i

liste.pop() : retire et renvoie le dernier élément de liste

liste.remove(elm) : retire la 1ère occurrence de elm dans liste

liste.sort() : trie liste par ordre croissant

liste.reverse(): renverse l'ordre des éléments dans la liste

del liste[i]: supprime l'élément d'indice i de liste

range (d, f, i): liste d'entiers débutant à d et finissant à f (exclu) avec un incrément de i

6 - Collections non-ordonnées

6.1 - Dictionnaires

Déclaration : [cle1: val1, cle2: val2, ..., cleN : valN]

len( dico): nombre de paires clé-valeur de dico

dico [cle]: valeur associée à cle

del dico [cle]: supprime la paire clé/valeur dont la clé est cle

dico.keys(): liste des clés de dico

dico.values(): liste des valeurs de dico

cle in dico: teste si dico comprend la clé cle

dico.items(): liste de tuples (cle, valeur) du dico

dico.copy(): copie du contenu de dico

7- Fichiers

fd = open( fichier, mode): ouverture du fichier suivant un mode parmi: ''→ lecture, 'w' écriture, 'w'ajout

fd.close(): fermeture d'un fichier

fd.read() : chaîne de caractère obtenue par lecture du fichier en totalité

fd.readline () : lecture d'une ligne du fichier (tous les caractères jusqu'au premier '\n' rencontré inclus)

fd.readlines () liste dont chaque élément est une ligne du fichier

fd.write (contenu) : écrit le contenu dans le fichier

fd.tell(): position courante du pointeur d'accès

fd.seek (decalage, reference): positionne le pointeur d'accès en le décalant de decalage octets par rapport à la position de reference valant : 0 pour le début du fichier, 1 pour la position courante, 2 pour la fin du fichier.

8- Modules

8.1 - Turtle

clear(): création d'une fenêtre de dessin vide

shape ('turtle') : forme du pointeur

circle (rayon, angle): trace un cercle de rayon sur une section donnée par angle en degré

forward (longueur): déplacement en ligne droite de longueur

8.2 - Random

choice (liste) : choix aléatoire d'un élément parmi ceux de la liste

randint (min, max): choix d'un entier aléatoire entre min et max

random(): renvoie un flottant aléatoire entre 0 et 1.0

8.3 - String

digits: constante 0123456789

lowercase: constante' abcdefgh...wxyz'

uppercase: constante ABCDEFGH...WXYZ'

letters: la chaîne de tous les caractères minuscules et majuscules

8.4 - Time

time () : renvoie la date sous la forme d'un entier

strftime("%d/%m/%Y: %H/%M"): renvoie le jour et l'heure au format spécifié

8.5 - Os

chdir( repertoire): change le répertoire courant de la console Python

execfile ( script): exécute un script dans la console python

Activités de cours et Exercices

Exercice 1 - Evaluation d'expression ★✰✰

Pour chacune des expressions suivantes, évaluez la valeur de l'expression.

((1+2)+3)=4

(8**3)=2

'toto' + 'tata'

('toto' + 'tata')+3

- 3/4

= 3/4.0

= 3.0 / 4

3.0 // 4.0

5%3

(1 < 3)

(0 < 1) and (5 > 6)

not (0 > 1)

Exercice 2 - Evaluation d'expression ★★★

Les opérateurs-, &, ^, >>, << permettent de traiter bit à bit les entiers. Ce sont respectivement les opérateurs logiques ou, et, négation, décalages des bits vers la droite et décalage des bits vers la gauche avec entrée d'un zéro. Pour chacune des expressions suivantes, évaluez la valeur de l'expression.

= 315

= (4 >> 1) + 2

4 >> 1+ 2

= 15 << (3 + 1)

= 15 << 3+1

(3 = 1) << 3

3 != 1 << 3

0x0

- 0x555 & 0x77

0x5555

1

32768

Exercice 3 - Affectations ★☆☆

Tracez l'évolution des variables pour chaque instruction dans les deux programmes suivants :

Programme 1:

E

3

10

+ b

+ b

Programme 2:

2

1

+=

· - -- 5

* <<= 4

sr %- 16

Exercice 4 - Permutation ★★☆

Écrire un programme permettant d'échanger les valeurs contenues dans 2 variables a et b quel que soit leur type, à l'aide d'une troisième variable.

Exercice 5 - Permutation de nombres ★★★

Écrire un programme permettant d'échanger les valeurs contenues dans 2 variables numériques sans variable auxiliaire. (Indication: cherchez à exploiter des combinaisons linéaires de a+y et r-y)

Exercice 5

Quel affichage produit le programme suivant :

i nb = 12.345

2 message

"Le nombre est"

a print message

4 print nb

5 print message, nb

sprint message, nb,

print message+str (nb)

sprint "%1" % nb

print "%8.2f" % nb

10 print "%08.21" % nb

11 print "%8.041 % nb

12 print "%s:%1" % (message, nb)

13 print "%su u%d" % (message, nb)

14 print message, "e" % (1000 nb)

15 print "%1" % 160

Exercice 7 - Input

1. Affectez les variables temps et distance par les valeurs 6.892 et 19.7.

Calculez et affichez la valeur de la vitesse.

Améliorez l'affichage en imposant un chiffre après le point décimal.

2. Saisir un nom et un âge en utilisant l'instruction input (). Les afficher.

Refaire la saisie du nom, mais avec l'instruction raw_input(). L'afficher.

Enfin, utilisez la «< bonne pratique»: recommencez l'exercice en transtypant les saisies effectuées avec l'instruction raw_input()

Fiche de révisions - Algorithmique

1. Généralités

Algorithme : un algorithme est la description d'une procédure à suivre afin de résoudre un problème donné. Il n'est pas nécessairement linéaire. Il est constitué d'instructions (traitements, conditions, boucles...), est typiquement mis en œuvre au moyen d'un langage de programmation, et est exécuté par un ordinateur.

Instruction : une instruction est un traitement élémentaire (opération, condition...).

Langage de programmation : un langage de programmation est un langage, une langue, permettant de mettre en œuvre des algorithmes. Comme toute langue, un langage de programmation possède une syntaxe, une grammaire et un lexique. Il permet à un ordinateur, au moyen d'un compilateur ou d'un interpréteur, d'exécuter un algorithme. On entend par << exécuter un algorithme >> le fait, pour un ordinateur, de réagir à la lecture des instructions d'un algorithme (afficher une fenêtre, effectuer une addition ou une multiplication...).

Algorithmique : l'algorithmique est la branche de l'informatique qui étudie les algorithmes indépendamment de tout langage de programmation.

Variable : formellement, une variable est un espace mémoire alloué par un ordinateur. On attribue à une variable un nom et l'on utilise ce nom. En fait, lorsqu'on manipule une variable, on manipule un espace mémoire (une ou plusieurs cases mémoires). Quand on dit j'ai un ordinateur << 32bits » ou « 64bits », il s'agit, pour faire simple, de la taille de chaque case mémoire. Par manipuler une variable, on entend mettre une donnée dans l'espace mémoire qui lui correspond. Le fait d'attribuer une valeur à une variable s'appelle une affectation. Il existe divers types de variables. Il est même possible d'en créer. En algorithmique, on parle facilement de entier naturel, entier, réel, booléen, caractère, chaîne de caractères.

2. Variables

Pourquoi des types de variables? On le disait, une variable correspond à un espace mémoire. Or, l'espace mémoire nécessaire pour une donnée varie en fonction du type de la donnée que l'on souhaite manipuler.

Entier naturel : les entiers naturels sont les entiers positifs (on a bien dit positif et non strictement positifs, donc 0 à +∞). On notera que la définition formelle (mathématique) d'un nombre entier n'est pas élémentaire.

Entier ou entier relatif : les entiers relatifs sont les entiers positifs ou négatifs.

Réel : la définition formelle d'un nombre réel n'est pas du tout élémentaire. De façon simplifiée, on retiendra qu'il s'agit des nombres décimaux possédant des chiffres avant la virgule, et potentiellement une infinité après. Informatiquement, il est impossible de stocker une infinité de chiffres. On n'en stocke qu'une partie et l'on perd donc de l'information. Les réels sont stockés usuellement sur 32 ou 64bits (4 ou 8 octets). On parle de nombres à virgule flottante.

Booléen : un booléen prend seulement deux valeurs, vrai/faux en algorithmique, true/false ou 1/0 en pratique.

Caractère : vous savez ce que c'est... Un caractère est typiquement stocké sur 7 bits (codage ASCII) ou 8 bits (codage ASCII étendu). A une représentation visuelle d'un caractère (celle que vous connaissez) est associé un code. L'ensemble des associations s'appelle un jeu de caractères. Il en existe de multiples: ASCII, UTF8, UNICODE...

Chaîne de caractères : on peut voir une chaîne de caractère comme un petit texte. En règle général, et pour simplifier, il s'agit d'un tableau de caractères. Une chaîne de caractères à un espace mémoire généralement de N octets, avec N = 1 x Nombre de caractères, à savoir 1 octet (8 bits) par caractère.

Tableau : oui, on peut définir des tableaux, des tableaux d'entiers, des tableaux de réels...! Pas besoin de vous faire un dessin, c'est un tableau. On peut même définir des tableaux de tableaux et ainsi de suite. On parle de tableau à 1, 2, 3, ..., N dimensions. On récupère chaque élément au moyen de son ou de ses indexes dans le tableau. En algorithmique, le premier index est 1, en programmation c'est généralement 0.

Divers : en pratique, il existe des types ou structures dites élémentaires bien plus complexes (exemple : pile, file, arbres, graphe, tas...). Il est encore possible de construire des types, encore plus complexes.

3. Affectation et expressions arithmétiques

Les expressions arithmétiques sont des instructions élémentaires, des calculs (additions, soustractions...), qui permettent d'affecter à une variable le résultat d'un calcul.

Opérateur Signification

X

%

affectation

addition

soustraction

multiplication

division

modulo

Exemple :

UnEntier : entier

UnResultat: entier

// Demande à l'utilisateur de saisir un entier, la valeur saisie est affectée à la variable UnEntier

UnEntier := saisir("Saisir un entier")

// Affecte à UnResultat le résultat de l'opération 5 x UnEntier

UnResultat := UnEntier x 5

// Affiche le résultat

Cette ligne est un commentaire.

afficher("Le résultat est : " + UnResultat)

Le << + >> ci-dessus représente une addition de chaînes de caractères, ce qui revient à mettre plusieurs chaînes côte-à-côte. Une telle addition de caractères ou chaînes de caractères s'appelle une concatenation.

4. Conditions et expressions booléennes

Une expression booléennes est un calcul sur des booléens. Le résultat est booléens, à savoir que le résultat est : «< vrai » ou «< faux ». Ci-dessous, le résultat des opérations logiques classiques (tables de vérité). On parle d'opérateurs logiques.

A

B

A

B

A

B

A

B

Opération Valeurs

FAUX

FAUX

VRAI

FAUX

FAUX

VRAI

VRAI

VRAI

NON A

VRAI

FAUX

A ET B

FAUX

FAUX

A OU B

FAUX

VRAI

A OUX B

FAUX

VRAI

FAUX

VRAI

VRAI

VRAI

VRAI

FAUX

N.B.: OUX signifie ou exclusif (XOR en anglais). Il existe essentiellement 2 autres opérateurs: NAND et NOR. 2/6

Par ailleurs, vous avez à votre disposition les opérateurs de comparaison que vous connaissez depuis bien longtemps à présent :

Forts de ces opérateurs booléens (opérateurs logiques et opérateurs de comparaison), nous pouvons à présent construire des algorithmes dépendant de conditions. On parle de branchement conditionnel. II s'agit de préciser que l'on effectue un traitement (une série d'instructions), que si une condition est vérifiée, i.e. si une condition est vraie.

SI Expression booléenne 1 ALORS

// Si l'expression booléenne 1 est vraie, je suis ici

SI Expression booléenne 11 ALORS

SINON SI Expression booléenne 12 ALORS

SINON

FIN SI

SINON SI Expression booléenne 2 ALORS

SINON

FIN SI

On parle de si imbriqués ou de conditions imbriquées lorsque l'on a des << si » dans des « si >>. Le « décalage » s'appelle indentation. Commentaires et indentations sont primordiaux pour simplifier la lecture et la compréhension de l'algorithme !

// Si l'expression booléenne 1 est fausse et l'expression booléenne 2 est vraie, je suis ici

// Si les expressions booléennes 1 et 2 sont fausses, je suis ici

5. Boucles

Les boucles sont appelées structures itératives. Il en existe plusieurs. Elles permettent de répéter une série d'instructions soit un certain nombre de fois (potentiellement infini) soit sous condition (tant qu'une condition est vraie ou jusqu'à ce qu'une condition soit vraie).

Boucle POUR : permet de répéter un traitement un certain nombre de fois (potentiellement infini)

i: entier

POUR i DE 1 A 10 PAS DE 1

FIN POUR

Explication: on répète 10 fois la série d'instructions, symbolisée par «< ...», à savoir on répète ces instructions pour i valant 1, 2, 3, 4, 5, 6, 7, 8, 9 et 10. Le PAS DE 1 signifie qu'on augment i de 1 à chaque tour de boucle. Cette augmentation s'appelle une incrémentation si le pas est positif, une décrémentation si le pas est négatif.

Boucle TANT QUE: permet de répéter un traitement tant qu'une condition est vraie.

TANT QUE Expression booléenne FAIRE

FIN TANT QUE

Ou, afin d'exécuter les traitements <...>> au moins une fois :

FAIRE

TANT QUE Expression booléenne

6. Algorithme

On vous demande d'écrire un algorithme en lui donnant un nom et en adoptant une syntaxe similaire à la suivante (Attention ! L'algorithme ci-dessous n'est pas forcément élémentaire. Retenez avant tout la syntaxe !):

Algorithme CalculerPGCD

Variables

DEBUT

FIN

NB1: entier

NB2: entier

A, B, D, R, PGCD: entier

// On demande à l'utilisateur de saisir 2 nombres

NB1 := saisir("Saisir un nombre :")

NB2 := saisir("Saisir un deuxième nombre: ")

A:= NB1

B := NB2

// Il faut que A et B soient > 0 (on ne sait pas diviser par 0, du moins chez les entiers)

SIA > O ET B >0 ALORS

SINON

FIN SI

// Si B plus grand que A, on intervertit A et B

SI B>A ALORS

FIN SI

D = B

B = A

A:= D

// On effectue des divisions euclidiennes successives (tant que le reste n'est pas nul)

R := B

TANT QUE R>0 FAIRE

PGCD :- R

D:= A/B

R:=A-CXB

A = B

B := R

FIN TANT QUE

// On affiche le PGCD, à savoir le dernier reste non nul

afficher("Le PGCD de " + NB1+" et " + NB2+" est " + PGCD)

afficher("Chez les entiers, on ne sait pas diviser par 0")

Rappel : PGCD (Plus Grand Commun Diviseur). Egalement, comprenez qu'un algorithme ne se lit pas comme une BD. Il faut parfois le lire sereinement et prendre le temps de réfléchir pour le comprendre. Ne soyez pas apeurés !

7. Procédures et fonctions

Procédures et fonctions sont des algorithmes réutilisables, à savoir des algorithmes que l'on peut utiliser dans d'autres algorithmes. Procédures comme fonctions ont un nom. Une fonction retourne un unique résultat. Une procédure ne retourne pas de résultat (Mea culpa: ceci n'est pas tout à fait exact, mais l'on s'en contentera). En fait, nous avons déjà utilisé une procédure et une fonction :

- afficher(UnTexte : chaîne de caractères) est une procédure. Elle affiche une chaîne de caractères passée en paramètre. UnTexte est une variable appelée paramètre.

saisir (UnMessage : chaîne de caractères): entier est une fonction qui affiche le message UnMessage (message passé en paramètre) et retourne, en l'occurrence, l'entier saisi par l'utilisateur. Ici, entier est le type de retour.

FONCTION Max(a: entier, b: entier): entier

Sl a > b ALORS

FIN SI

RETOURNER a

RETOURNER b

FIN FONCTION

N.B.: une fonction s'arrête normalement dès que le retour est effectué.

PROCEDURE DireMin(a: entier, b: entier)

Si a > b ALORS

SINON

FIN SI

FIN PRO

FAQ

Qu'est-ce qu'un algorithme?

Un algorithme est la description d'une procédure à suivre afin de résoudre un problème donné. Il est constitué d'instructions (traitements, conditions, boucles...), est typiquement mis en œuvre au moyen d'un langage de programmation, et est exécuté par un ordinateur.

Qu'est-ce qu'une variable?

Formellement, une variable est un espace mémoire alloué par un ordinateur. On attribue à une variable un nom et l'on utilise ce nom. En fait, lorsqu'on manipule une variable, on manipule un espace mémoire (une ou plusieurs cases mémoires).

Qu'est-ce qu'une boucle?

Les boucles sont appelées structures itératives. Elles permettent de répéter une série d'instructions soit un certain nombre de fois (potentiellement infini) soit sous condition (tant qu'une condition est vraie ou jusqu'à ce qu'une condition soit vraie).

Partagez vos remarques, questions ou propositions d'amélioration ici...

Enregistrer un commentaire (0)
Plus récente Plus ancienne

Publicité 1

Publicité 2