Résultat de l'exécution


Cette page fait partie du cours de polytech PeiP1 et 2 Bio

1. Découverte de Python

Pour l'ensemble des programmes suivants, on vous demande :

Il peut également être intéressant de faire un résumé des différentes commandes sous forme d'une fiche de révision.

Les codes python présents sur cette page peuvent être exécutés en appuyant sur le bouton Exécute situé en dessous de chacun d'entre eux. Le code sera exécuté sur une machine personnelle à mon domicile sauf si elle est éteinte, dans ce cas un message d'erreur vous alertera de l'impossibilité de l'exécution.

Le résultat de l'exécution sera affiché dans la fenêtre prévue à cet effet sur cette page.

1.1. Les types de base

1.1.1. Les booléens

Les booléens bool représentent les valeurs vrai ou faux.

1.1.1.a  combinaisons (and_or_xor_not.py)

  1. vrai = True
  2. faux = False
  3.  
  4. print(vrai or faux)
  5. print(vrai and faux)
  6.  
  7. print("vrai ou vrai", vrai | faux)
  8. print("vrai et faux", vrai & faux)
  9. print("vrai et vrai", vrai & vrai)
  10. print("vrai ou exclusif vrai", vrai ^ vrai)
  11.  
  12. print("non vrai = ", not(True))
  13. print("non faux = ", not(False))

On rappelle les tables de vérité des opérateurs logiques :

 A   B   A or B   A and B   A xor B 
 False   False   False   False   False 
 False   True   True   False   True 
 True   False   True   False   True 
 True   True   True   True   False 
Table de vérité

1.1.2. Les chaînes

Les chaînes de caractères str représentent des mots ou des phrases entre guillemets. Le premier indice d'une chaîne (i.e. l'indice du première caractère) commence à 0.

1.1.2.a  input, print (input.py)

  1. nom = input("saisir votre nom ? ")
  2. print("bonjour " + nom)

Note : le code précédent ne s'exécutera pas en raison du input demande un saisie au clavier.

1.1.2.b  indices (str_indices.py)

  1. chaine = "lalelilolu"
  2.  
  3. print(len(chaine))
  4. print(chaine[0])
  5. print(chaine[1])
  6.  
  7. print(chaine[2:])
  8. print(chaine[2:4])
  9. print(chaine[:4])
  10. print(chaine[3:-2])

1.1.2.c  multiplication de chaine (str_mul.py)

La multiplication des ... chaines.

  1. print(3 * "oh !")
  2. print("oh !" * 3)
  3. oh = "oh! " * 3
  4. print( oh )
  5. print( len(oh) )

1.1.2.d  parcours de chaine : for (str_enum_char.py)

On peut parcourir une chaîne en itérant sur ses valeurs.

Le terme itération en informatique fait référence au parcours d'un container, un container étant un objet qui contient d'autres objets.

  1. chaine = "lalelilolu"
  2.  
  3. # pour tout caractere dans la chaine faire
  4. for caractere in chaine:
  5.     print(caractere)

1.1.2.e  parcours de chaine : indice (str_enum_index.py)

On peut parcourir une chaîne en itérant sur ses indices. Le premier caractère de la chaîne étant en position 0.

  1. chaine = "lalelilolu"
  2.  
  3. # avec un while
  4. indice = 0
  5. while indice < len(chaine):
  6.     print(chaine[indice])
  7.     indice = indice + 1
  8.    
  9. # avec un for et enumerate
  10. for indice,caractere in enumerate(chaine):
  11.     print(indice,caractere)

1.1.3. Les réels

Les nombres réels sont appelés nombres à virgule flottante float et peuvent représenter des nombres dde l'ordre de $± 10^{±308}$. Il s'agit en fait de nombres en double précision.

1.1.3.a  opérations de base (float_basic.py)

  1. x = 2.0
  2. y = 3.0
  3. z = x / y
  4. print(z)
  5. print(type(z))

1.1.3.b  résolution d'une équation du second degré (float_sqrt.py)

Pour utiliser des fonctions mathématiques comme la racine carrée (sqrt), les fonctions trigonométriques, etc, il faut faire appel à la librairie mathématique.

  1. import math
  2.  
  3. a = 1
  4. b = 1.0
  5. c = -2.0
  6. delta = b*b - 4*a*c
  7. x1 = (-b + math.sqrt(delta))/(2*a)
  8. x2 = (-b - math.sqrt(delta))/(2*a)
  9. print(delta, x1, x2)

1.1.3.c  opérations trigonométriques (float_trigo.py)

  1. import math
  2.  
  3. angle_degrees = 90.0
  4. angle_radians = angle_degrees * 2.0 * math.pi / 360.0
  5.  
  6. print(math.sin(angle_radians))
  7. print(math.cos(angle_radians))

1.1.3.d  autres opérations (float_others.py)

On dispose de nombreuses autres fonctions de la librairie mathématique.

  1. import math
  2.  
  3. x = 279.12
  4. # racine carrée (réels)
  5. y = math.sqrt(x)
  6.  
  7. # racine carrée (entiers)
  8. # uniquement à partir de la version 3.8 de Python
  9. # z = math.isqrt(int(x))
  10. print(y)
  11. print(z)
  12.  
  13. # truncation
  14. print(math.trunc(y))
  15.  
  16. # puissance
  17. print(math.pow(2,8))
  18.  
  19. print(math.sin(math.radians(45)))

1.1.4. Les entiers

Le type entier int représente des valeurs comprises dans l'intervalle -2_147_483_648 et 2_147_483_647.

1.1.4.a  opérations de base (int_basic.py)

  1. x = 2
  2. print("x=",x)
  3. y = 3
  4. print("y=",y)
  5. z = x * y / 4
  6. print("z=", z)
  7. v = y / x   # division classique (réel)
  8. w = y // x  # division entière
  9. print("v=", v)
  10. print("w=", w)

1.1.4.b  affectations (int_assignments.py)

  1. x, y, z = 2, 4, -5
  2. print(x, y, z)
  3. u, v = x*y+z, y/x-z
  4. print(u, v)

1.1.4.c  échange de valeurs (int_swap.py)

  1. a = 10
  2. b = -3
  3.  
  4. print(a,b)
  5.  
  6. a,b = b,a
  7.  
  8. print(a,b)

1.2. Les types complexes

1.2.1. Les listes / tableaux

Les tableaux ou les listes list() sont gérés de la même manière. Ils sont définis par une liste de valeurs entre crochets.

1.2.1.a  création (list_create.py)

  1. # définition d'une liste en donnant les valeurs
  2. liste = [1, 2, 3, "coucou", 3.14]
  3. print(liste)
  4.  
  5. # génération des valeurs entre 1 et 9
  6. liste = [ i for i in range(1,10) ]
  7. print(liste)

La fonction range génère au fur et à mesure des valeurs entières croissantes :

Comme on le voit, la borne supérieure est toujours diminuée de 1.

1.2.1.b  indices (list_indices.py)

On peut faire référence à un élément de la liste en utilisant son indice entre crochets, le premier éléments se trouvant à l'indice 0. On peut également définir des plages d'indices [0:2] qui signifie les éléments aux indices 0 et 1.

  1. liste = [ "pomme", "poire", "abricot"]
  2.  
  3. # affiche la longueur
  4. print(len(liste))
  5.  
  6. # affiche la liste
  7. print(liste)
  8.  
  9. print(liste[0])
  10.  
  11. print(liste[2])
  12.  
  13. print(liste[0:1])
  14.  
  15. print(liste[0:2])
  16.  
  17. liste[1:3] = ["fraise", "orange"]
  18. print(liste)
  19.  
  20. liste = [ "pomme", "poire", "abricot"]
  21. liste[1:2] = ["fraise", "orange"]
  22. print(liste)
  23.  
  24. liste = [ "pomme", "poire", "abricot"]
  25. liste[1:2] = "fraise"
  26. print(liste)

1.2.1.c  append, insert, remove, del (list_app_ins_rem_del.py)

On peut :

  1. # definition d'une liste
  2. liste = [ "pomme", "poire", "abricot"]
  3.  
  4. # ajout d'un élément en fin de liste / tableau
  5. liste.append('orange')
  6. print(liste)
  7.  
  8. # ajout au début
  9. liste.insert(0, "banane")
  10. print(liste)
  11.  
  12. # ajout après le premier élément de plusieurs éléments
  13. liste.insert(1, ["kiwi", "lemon"])
  14. print(liste)
  15.  
  16. # suppression d'un élément existant
  17. liste.remove("banane")
  18. print(liste)
  19.  
  20. # suppression d'un élément non existant
  21. # provoquera une erreur
  22. # liste.remove("ananas")
  23. # print(liste)
  24.  
  25. # suppresion d'un élément suivant son indice
  26. del liste[0]
  27. print(liste)

1.2.1.d  insertion de sous liste (list_ins_sub_list.py)

Le problème du code précédent est que l'insertion de la liste ["kiwi", "lemon"] dans liste génère une liste contenant une liste : ['banane', ['kiwi', 'lemon'], 'pomme', 'poire', 'abricot', 'orange']

Si on supprime l'élément à l'indice 1 de la liste, c'est ["kiwi", "lemon"] qui est supprimé et non pas "kiwi".

Si on désire n'avoir qu'une seule liste il faut procéder ainsi :

  1. # definition d'une liste
  2. liste = [ 1, 4, 5 ]
  3. sous_liste = [2, 3]
  4.  
  5. # ajout d'une sous-liste dans la liste pour n'avoir q'une
  6. # liste de valeurs
  7. liste[1:1] = sous_liste
  8. print(liste)
  9.  

1.2.1.e  parcours, appartenance (list_in.py)

  1. liste = [ "pomme", "poire", "abricot"]
  2.  
  3. # parcours sur les valeurs
  4. for element in liste:
  5.     print(element)
  6.  
  7. # parcours sur les indices avec for    
  8. for indice in range(len(liste)):
  9.     print( liste[indice] )
  10.    
  11. # parcours sur les indices avec while    
  12. indice = 0    
  13. while indice < len(liste):
  14.     print( liste[indice] )
  15.     indice += 1
  16.    
  17. # enumerate
  18. # utilisation de l'indice et de l'élément
  19. print("enumerate:")
  20. print("-" * 10)
  21. for indice, element in  enumerate(liste):
  22.     print( indice, element )
  23.  
  24. # vérification de la présence d'un élément dans la liste
  25. if "poire" in liste:
  26.     print("poire appartient à la liste")
  27. else:
  28.     print("poire n'appartient pas à la liste")
  29.    
  30. # vérification de l'absence d'un élément dans la liste
  31. if "pastèque" not in liste:
  32.     print("pastèque n'appartient pas à la liste")
  33. else:
  34.     print("pastèque appartient à la liste")
  35.    

1.2.1.f  tri (list_sort.py)

  1. liste = [ "pomme", "poire", "abricot"]
  2.  
  3. # tri par ordre croissant des valeurs
  4. liste.sort()
  5. print(liste)
  6.    
  7. # tri par ordre décroissant des valeurs    
  8. liste.sort(reverse=True)
  9. print(liste)

1.2.1.g  nombre d'occurrences, indice (list_count_index.py)

  1. liste = ["jean","sans","terre","jean","sans","peur","jean","le","bon"]
  2.  
  3. # nombre d'occurrences de "jean"
  4. print("il y a ", liste.count("jean"), " jean dans la liste")
  5.  
  6. # indice de "sans" en commençant à l'indice 0
  7. print(liste.index("sans"))
  8.  
  9. # indice de "sans" en commençant à l'indice 2
  10. print(liste.index("sans", 2))

1.2.2. Les tuples

Les tuples sont des listes (ou tableaux) immuables.

1.2.2.a  tuple (tuple_app_mod.py)

  1. t1 = (1, 2, 3)
  2. print( t1 )
  3.  
  4. # impossible
  5. # t1.insert(4)
  6. print(t1[0], t1[2])
  7. print(t1)
  8.  
  9. # provoque une erreur
  10. t1[1:2] = (10)

Note : la dernière instruction provoque une erreur car on ne peut modifier un tuple.

1.2.2.b  tuple parcours (tuple_enum.py)

  1. t1 = (1, 2, 3)
  2.  
  3. for valeur in t1:
  4.     print(valeur)
  5.    
  6. for indice,valeur in enumerate(t1):
  7.     print(indice,valeur)

1.2.3. Les ensembles

Les ensembles sont définis par les accolades { 1, 2, 3 }.

1.2.3.a  ensemble ajout, suppression (set_add_remove.py)

  1. set1 = { 1, 2, 3, 2, 1, 4, 2 }
  2.  
  3. # affichage
  4. print(set1)
  5.  
  6. #ajout d'un élément
  7. set1.add(5)
  8. print(set1)
  9.  
  10. # suppression d'un élément existant
  11. set1.remove(1)
  12. print(set1)
  13.  
  14. # suppression d'un élément non existant
  15. # provoque une erreur
  16. set1.remove(7)

Note : la dernière instruction provoque une erreur car on tente de supprimer la valeur 7 qui n'est pas dans l'ensemble.

1.2.3.b  tuple d'un ensemble (set_enum.py)

  1. set1 = { 1, 2, 3, 2, 1, 4, 2 }
  2.  
  3. for element in set1:
  4.     print(element)
  5.    
  6. for indice, element in enumerate(set1):
  7.     print(indice, element)

1.2.4. Les tableaux associatifs / associations

Les tableaux associatifs dict() également appelés dictionnaires en Python sont introduits avec des accolades comme les ensembles et établissent une correcpondance entre une clé et une valeur.

1.2.4.a  dictionnaire définition (dico_def.py)

  1. # dictionnaire de personnes avec nom et année de naissance
  2. # le nom est la clé
  3. dico = { "Mathieu": 1975, "Michel": 1949, "Jean" : 1970 }
  4.  
  5. print(len(dico))
  6. print(dico)

1.2.4.b  dictionnaire ajout d'un élément (dico_add.py)

  1. # dictionnaire de personnes avec nom et année de naissance
  2. # le nom est la clé
  3. dico = { "Mathieu": 1975, "Michel": 1949, "Jean" : 1970 }
  4.  
  5. print(dico)
  6.  
  7. # ajout
  8. dico["Sarah"] = 2013
  9. print(dico)
  10.  
  11. # ajout du même élément
  12. dico["Sarah"] = 2013
  13. print(dico)
  14.  
  15. # modification de la date de naissance du même élément
  16. dico["Sarah"] = 791
  17. print(dico)

1.2.4.c  dictionnaire parcours (dico_iter.py)

  1. import datetime
  2.  
  3. dico = { "Mathieu": 1975, "Michel": 1949, "Jean" : 1970 }
  4.  
  5. # parcours des clés
  6. for element in dico:
  7.         print(element)
  8.  
  9. # parcours avec (clé,valeur)
  10. for paire in dico.items():
  11.         print(paire)
  12.  
  13. # parcours avec (clé,valeur)
  14. for paire in dico.items():
  15.     print(paire[0], " => ", paire[1])
  16.  
  17. # parcours avec (clé,valeur)    
  18. for cle, valeur in dico.items():
  19.     print(cle, " => ", valeur)
  20.  
  21. # affichage de l'âge de chaque personne        
  22. print("liste des ages")
  23. print(20 * "-")
  24. aujourdhui = datetime.datetime.now()    
  25. for nom, ddn in dico.items():
  26.         print(nom, aujourdhui.year - ddn)
  27.  

1.2.4.d  dictionnaire accès, suppresion (dico_get_del.py)

  1. dico = { "Mathieu": 1975, "Michel": 1949, "Jean" : 1970 }
  2.  
  3. print(dico.get("Jean"))
  4.  
  5. if "Jean" in dico:
  6.     del dico["Jean"]
  7.    
  8. print(dico)  

1.2.4.e  dictionnaire accès clés, valeurs (dico_keys_values.py)

  1. dico = { "Mathieu": 1975, "Michel": 1949, "Jean" : 1970 }
  2.  
  3. print(dico.keys())
  4. print(dico.values())

1.3. Exercices

Exercice 1.1

A partir de la liste suivante, donner la liste des indices de toutes les occurrences de "jean".

  1. liste = ["jean","sans","terre","jean","sans","peur","jean","le","bon"]

On veut donc obtenir :

[0, 3, 6]

Exercice 1.2

A partir de la liste suivante, supprimer toutes les occurrences de "sans".

  1. liste = ["jean","sans","terre","jean","sans","peur","jean","le","bon"]

Exercice 1.3

A partir de la liste suivante, créer un dictionnaire qui pour chaque mot associe le nombre d'occurrences du mot :

  1. liste = ["jean","sans","terre","jean","sans","peur","jean","le","bon"]

On veut donc obtenir :

{'bon': 1, 'jean': 3, 'peur': 1, 'terre': 1, 'le': 1, 'sans': 2}

Exercice 1.4

A partir du dictionnaire suivant, afficher les noms des personnes qui ont moins de 30 ans.

  1. # dictionnaire de personnes avec nom et année de naissance
  2. # le nom est la clé
  3. dico = { "John": 1979, "Penelope" : 1991, "Paul": 1989, "Gary" : 1995, "Lea" : 2002 }

Exercice 1.5

A partir du dictionnaire suivant, recréer un dictionnaire trié suivant les clés :

  1. # dictionnaire de personnes avec nom et année de naissance
  2. # le nom est la clé
  3. dico = { "John": 1979, "Penelope" : 1991, "Paul": 1989, "Gary" : 1995, "Lea" : 2002 }

On veut donc obtenir :

{'Gary': 1995, 'John': 1979, 'Lea': 2002, 'Paul': 1989, 'Penelope': 1991}

Exercice 1.6

A partir du dictionnaire suivant, inverser clés et valeurs :

  1. # dictionnaire de personnes avec nom et année de naissance
  2. # le nom est la clé
  3. dico = { "John": 1979, "Penelope" : 1991, "Paul": 1989, "Gary" : 1995, "Lea" : 2002 }

On veut donc obtenir :

{1995: 'Gary', 1979: 'John', 2002: 'Lea', 1989: 'Paul', 1991: 'Penelope'}