Lets do it the Python way

Jusqu'ici, nous avons vu la sémantique du langage Python. Avec les connaissance acquises jusqu'ici, vous savez écrire un programme avec la syntaxe Python. Si vous avez vu certaines caractéristiques du langage, il est est temps de voir les plus intéressantes.

Manipuler les listes

Pour transformer et/ou filtrer les listes, Python propose un mécanisme inspiré du langage Haskell : les Comprehension lists. Soit les listes suivantes :

camelot = ["Arthur", "Merlin", "Lancelot", "Galahad", "Robin", "Karadoc"]
wizards = ['Merlin', "Tim"]

Nous pouvons obtenir une liste de la taille des éléments de la liste camelot de la manière suivante :

[len(element) for element in camelot]

Nous pouvons obtenir la liste des chevaliers (éléments qui ne sont pas dans la liste wizards) de la manière suivante :

[knight for knight in knights if knight not in wizards]

Exercices

Soit la liste de médias suivante. Chaque élément est une liste de deux éléments, une chaine et un booléen. Le booléen représente si un média a été visionné (True) ou non (False).

Générez et affichez une liste contenant uniquement les titres des médias


In [ ]:
medias = [["The Philosopher's Stone", True],
          ["The Chamber of Secrets", True],
          ["The Prisoner of Azkaban", False],
          ["the Goblet of Fire", True],
          ["the Order of the Phoenix", False],
          ["the Half-Blood Prince", True],
          ["the Deathly Hallows – Part 1", False],
          ["the Deathly Hallows – Part 2", False]]

In [ ]:

Générez et affichez une liste des titres des médias non visionnés.


In [ ]:

Exercice un peu avancé

Il existe une fonction sum(collection) qui retourne la somme des éléments de la collection. Le fonctionnement est le suivant :

>>> sum([3, 6, 10])
19

Nous allons nous en servir pour les informations contenues dans la liste suivante :


In [ ]:
movies = [["The Philosopher's Stone", 152, True],
          ["The Chamber of Secrets", 161, True],
          ["The Prisoner of Azkaban", 142, False],
          ["the Goblet of Fire", 157, True],
          ["the Order of the Phoenix", 138, False],
          ["the Half-Blood Prince", 153, True],
          ["the Deathly Hallows – Part 1", 126, False],
          ["the Deathly Hallows – Part 2", 130, False]]

À l'aide des comprehension lists et du modèle suivant, affichez le temps total pour un marathon Harry Potter.


In [ ]:
TIME_WATCHING = 'Il y a {}h{} à visionner.'

In [ ]:

Toujours à l'aide des comprehension lists et du modèle précédent, affichez le temps total des épisodes restant à voir.


In [ ]:

Enfin, intégrez ce code dans une fonction. Écrivez donc une fonction time_remaining qui prend en paramètre une collection sur le format précédent et qui retourne un entier représentant le temps des épisodes restant à voir.

Afficher le temps total des épisodes restant à voir à l'aide de cette fonction, de la liste précédente et du template TIME_WATCHING.


In [ ]: