AideMemoirePython
Télécharger PDF1- 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).