Historique de Python Programmation Impérative Introduction Python et Variables Début en 1989-1990 Écrit en C Versions « précédentes » 1.5.2 : 1999 2.0 : 2000 2.7.10 : 2015 3.0 : 2008 3.5 : septembre 2015 salles de TP : version 3.2 (quelques différences) De plus en plus utilisé dans le monde scientifiques Tous types d'utilisations faire des calculs, des statistiques interfaces graphiques jeux sites webs (django, …) 6 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables Notre Second Langage : Python 3 Langage tous usages ordre (principal) = manipuler des variables, fonctions bash ordre = lancer d'autres programmes simple à apprendre mais complet disponible sur Linux, Mac, Windows beaucoup de "bibliothèques" >_ Langage interprété (Python, bash, PERL, …) écriture du programme dans un fichier exécution de l'interpréteur sur ce fichier (textuel) Programmation Impérative 3 : Plan Historique de Python Premiers programmes Python Variables et types Instructions conditionnelles Listes de valeurs Interaction avec l'utilisateur exemple : python3 programme.py Rappel : langage compilé (C, C++, Ada, …) écriture du programme dans un fichier lancement du compilateur sur ce fichier lecture du fichier (textuel) transformation vers du langage machine sauvegarde dans un nouvel exécutable (binaire) lancement de l'exécutable créé 1 2 3 4 5 6 7 8 9 7 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables 8 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables Premiers Programmes Python Programmation Impérative 3 : Plan Affichage et types Historique de Python print(42) print( 42 ) print ( 42) print("Hello bob") print("Hello bob") print("42") print("nombre =", 42) print("") print(42.42) Premiers programmes Python Commentaires 1 2 3 Variables et types Instructions conditionnelles Listes de valeurs Interaction avec l'utilisateur # toute cette ligne est un commentaire print(42) # cette fin de ligne est un commentaire # print(42) toute cette ligne est un commentaire Opérations arithmétiques 1 2 3 4 5 6 7 8 print(40 + 2) print(42*1.01) print(42.42 / 1.01) print(2+4 * 10) # priorité print(42**2) # puissance : 42² print(42**0.5) # racine ! : √42 print((2 + 4)*10) # parenthèses print(41*1.01) 9 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables 10 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables Types et Variables Toute valeur a un type ex : 12 est un entier mais "12" est une chaîne de caractères types principaux en python int : entier float : nombre réel (à virgule flottante) complex : nombre complexes (a + b ⋅ j ) str : string, chaîne de caractères (simple ou double guillemets) list : liste de valeurs dict : dictionnaire, conteneur associatif >_ bash (toutes les valeurs sont des chaînes de caractères) Variable : un nom pour une valeur affectation de variable a="tp1" , a = "tp1" , a = 12 dossier = 'tp1' , dep = 40 + 2 bash dossier=tp1 >_ utilisation de variables print(dossier) , print(dep) , print(dep**dep) bash texte par défaut, $ pour les variables : echo texte ${dossier} variables par défaut, systématiquement des guillemets pour le texte Exemple de Variables en Python Programme du TP1 1 2 3 4 5 x = 1 y = 100 a = 0.2 res = x + a * y print("res = ", res) Carrés des nombres 1 2 3 4 5 6 7 8 9 10 11 12 i = 1 print(i, i = 2 print(i, i = 3 print(i, i = 4 print(i, i = 5 print(i, i = 6 print(i, "a pour carré", i*i) "a pour carré", i*i) "a pour carré", i*i) "a pour carré", i*i) "a pour carré", i*i) "a pour carré", i*i) >_ 11 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables 12 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables Python : Typage Fort et Dynamique Noms de Variables et Mots Clés Typage dynamique en Python Noms de variables : ex : a truc objet2 maVariable ma_variable ne contient que des lettres, chiffres et _ ne doit pas commencer par un chiffre chaque valeur a un type les variables ont le type des valeurs qu'on leur affecte 1 i = "bonjour" # type str 2 i = 42 # puis type int 3 print(type(i)) # <- type() pour obtenir le type Mots clés mots ayant une sémantique spéciale False None True and as assert break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield Interdits comme nom de variable (ou fonction) typage statique (C) : un type à chaque variable, une fois pour toutes Typage fort en Python certaines opérations entre types sont interdites ex : "salut" / 42 elles causent des erreurs à l'exécution les opérations permises dépendent des types, ex : a * b permis ? nb * nb ⇒ ok, ex : 40 * 1.05 str * int ⇒ ok, ex : "la" * 42 list * int ⇒ ok str * str ⇒ non 13 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables 14 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables Programmation Impérative 3 : Plan Instructions Conditionnelles if else Historique de Python Instruction conditionnelle besoin d'exécuter une partie du programme ou une autre selon une condition Premiers programmes Python Variables et types Instructions conditionnelles Listes de valeurs Interaction avec l'utilisateur Instructions if en Python 1 2 3 4 5 6 7 unites = 42 prixUnitaire = 9.50 if unites*prixUnitaire < 400: reste = 400 - unites*prixUnitaire print("C est bon, il te reste", reste) print("Fin de la transaction") Instructions if…else (si…sinon) 1 2 3 4 5 6 7 20 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables … if unites*prixUnitaire < 400: reste = 400 - unites*prixUnitaire print("C est bon, il te reste", reste) else: print("Non....") print("Fin de la transaction") 21 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables Importance de l'Indentation en Python Indentation : nombres d'espaces en début de ligne Bonnes pratiques (tous languages) l'identation reflète la structure du programme chaque « bloc » est indenté par rapport à son parent ex : les sous parties de if ont plus d'espaces Logique Booléenne “Mathématiquement” 12 < 13 est vrai (valeur booléenne V) 11 ≤ 10 est faux (valeur booléenne F) Opérateurs booléens et, ou, non F et F ... vaut ... F V et F ... vaut ... F V et V ... vaut ... V En Python : indentation = bloc obligation d'indenter correctement le contenu du if (et else ) doivent avoir plus d'espaces Conseils F ou F ... vaut ... F V ou F ... vaut ... V V ou V ... vaut ... V non V ... vaut ... F non F ... vaut ... V En Python constante True et False , opérateurs booléens and , or , not opérateurs de comparaison : == < > <= >= != indenter avec 4 espaces ne jamais utiliser de tabulations 1 enPanne = False 2 carburant = 25.42 3 4 if carburant > 5 and not enPanne: 5 print("Tout va bien") 22 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables 23 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables Retour sur l'Instruction if de Python Programmation Impérative 3 : Plan Structure à suivre pour if 1 if «cond»: 2 «instr» 3 «instr» 4 … 5 … 1 if «cond»: 2 «instr» 3 … 4 else: 5 «instr» 6 … 7 … # # # # si cond est True si cond est True si cond est True après le if # si cond est True # si cond est True Historique de Python Premiers programmes Python Variables et types Instructions conditionnelles Listes de valeurs Interaction avec l'utilisateur # si cond est False # si cond est False # apres le if Où «cond» est une condition booléenne «instr» représente n'importe quelle instruction Python les : sont obligatoire l'indentation (devant «instr») est obligatoire la désindentation marque la fin du if 24 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables 25 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables Listes en Python Opérations sur les Listes : accès simple Liste peut aussi être appelée « tableau » conteneur d'éléments une liste contient des éléments Exemples de listes 1 l1 = [10, 13, 9, 4, 15] 2 l1bis = [10,13,9,4, 15 ] 3 l2 = ["bonjour", "salut", "hello", "hola"] 1 l3 = ["pi", 3.141592, "echap", 16777216] 2 listeVide = [] 1 2 3 4 5 e = 2.7 x = 42.42 message = "hello" l = [e, x, message, "autre", e, x*e] ... 26 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables Accès à un élément : «variable» [ «indice» ] (ex: l1bis[2] ) lecture/écriture indices commençant à 0 ! 1 2 3 4 5 6 7 l = ["premier", "second", "dernier"] print(l[0]) # premier print(l[2]) # dernier l[1] = "DEUXIEME" print(l[1]) # DEUXIEME print(l) # ['premier', 'DEUXIEME', 'dernier'] Longueur d'une liste, fonction len() nombre d'éléments dans la liste 1 print( len(l) ) # 3 2 print( len([]) ) # 0 3 print( len( ["hello"] ) ) # 1 Test d'appartenance à une liste, mot clé in 1 l = ["un", "deux", "trois"] 2 print( 'un' in l, 'quatre' in l) # True False 27 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables Opérations sur les listes Concaténation de deux listes et répétition d'une liste opérateur + : «liste» + «liste» opérateur * : «liste» * «entier» Ajout d'un élément à la fin fonction append : «liste» .append( «element» ) Statistiques fonctions sum / min / max : par ex. sum( «liste» ) , ... 1 2 3 4 5 6 7 8 9 10 11 12 13 A = [1, B = [4, print(A print(B 2, 3] 5] + B) * 3) Programmation Impérative 3 : Plan Historique de Python Premiers programmes Python Variables et types Instructions conditionnelles Listes de valeurs Interaction avec l'utilisateur # [1, 2, 3, 4, 5] # [4, 5, 4, 5, 4, 5] y = A + B y.append(42) print(y) # [1, 2, 3, 4, 5, 42] y[0] = 0 y = y + [3.14] print(y) print(max(y)) # [0, 2, 3, 4, 5, 42, 3.14] # 42 28 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables 32 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables Entrée Utilisateur : la Fonction input Lecture de Nombres : Conversions input() renvoie une chaîne de caractères But : rendre un programme interactif Comment : demander à l'utilisateur de taper du texte Fonction input(invite) affiche l'invite à l'utilisateur attend que l'utilisateur tape du texte et valide avec « entrée » renvoie la chaîne tapée par l'utilisateur 1 nb = input("Entrez un nombre : ") # 5 2 msg = input("Entrez un message : ") # Poum Tchak 3 print( nb * msg ) # erreur chaine*chaine But : conversion string⇆nombre (pas limité au cas de input ) fonction int(chaine) renvoie un entier fonction float(chaine) renvoie un flottant (réel) fonction str(truc) renvoie une string Exemple 1 nom = input("Entrez votre nom : ") 2 msg = input("Entrez un message : ") 3 print("Yo", nom, "! Tu as dit «", msg, "»") Le programme est interactif ! Faut-il utiliser la fonction input ? plus « fun » mais moins automatisable 33 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables 1 print( int("123") == 123 ) # True 2 print( float("42.12") == 42.1200) # True 3 print( int(nb) * msg) # ok! 1 2 3 4 age_string = input("Quel est votre age ? ") suivant = int(age_string) + 1 suivant_str = str(suivant) print("Vous allez avoir " + suivant_str + " ans !") 34 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables Paramètres d'un Programme But : l'utilisateur donne des paramètres au programme >_ bash bash creer-tp.bash tp1 tp2 accès aux paramètres avec ${1} , ${2} , ... et $@ python3 monprog.py poum tchak 5 Variables en programmation impérative Types de base et variables en Python Logique booléenne importation du « module » sys (détails plus tard) sys.argv contient une liste avec Instruction conditionnelle ( if / else ) chaque paramètre est une chaîne de caractères Fonctions prédéfinies len , sum , range , ... le nom du fichier .py puis les paramètres 1 2 3 4 5 6 7 8 9 10 Points Clés import sys Type liste et opération sur les listes Fonctions de variables ma_liste.append(...) print(sys.argv) # ["monprog.py", "poum", "tchak", "5"] print(len(sys.argv)) # 4 (le nom du fichier + 3 paramètres) Entrée utilisateur avec la fonction input Paramètre de programme avec la liste sys.argv texte = sys.argv[1] + "-" + sys.argv[2] + " " nb = int(sys.argv[3]) # conversion vers un entier print(nb * texte) 35 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables 36 / 36 − Rémi Emonet − Programmation Impérative Introduction Python et Variables