Sur les listes

Consignes

Le code Python utilisé pour définir vos fonctions doit obligatoirement se limiter à ce que l'on trouve dans le cours. Il est parfaitement interdit d'aller chercher des fonctions "magiques" ici ou là qui feront une partie du travail. Un tel code serait évalué par la note minimale. Savoir se servir de la documentation d'un langage, savoir utiliser les bibliothèques du langage sont des capacités à acquérir sur le long terme lorsqu'on apprend à programmer, mais ce n'est pas du tout l'objectif de ce début d'année: vous devez d'abord apprendre à maîtriser les instructions de base, à maîtriser le contenu du cours (ce qui est déjà un travail conséquent !)

Bien entendu, les fonctions de tests ne doivent pas renvoyer d'erreur d'assertion.

Et évidemment, il ne doit y avoir aucune erreur de syntaxe dans votre code !

Rappelons également que le code déjà écrit dans l'énoncé ne doit en aucun cas être modifié.

Vous penserez à ajouter les chaînes de documentation pour chaque fonction n'en ayant pas (sauf pour les fonctions de test, leur nom est préfixé par test et cela suffit à clarifier leur rôle).
N'oubliez pas de sauvegarder régulièrement votre travail ! Et de sauvegarder avant de quitter.

Objectifs

L'objectif (exercices 1 à 5) est ici de définir des fonctions prenant en paramètre une liste et renvoyant une sous-liste de cette liste (une sous-liste est une liste constituée de certains éléments de la liste initiale).

Toutes ces sous-listes devront être définies en compréhension.

Exercice 1

Question 1

Définir un corps possible pour la fonction plus_de_voyelles prenant en entrée une chaîne de caractères (un mot) et renvoyant en sortie True si cette chaîne contient plus de voyelles (strictement) que de consonnes (et False sinon).

Pour simplifier la suite, on pourra supposer que les mots utilisés en entrée pour la fonction sont tous écrits avec les lettres de l'alphabet, minuscules, sans accent.

Question 2

On suppose disposer de listes de mots (écrits en minuscules sans accent). Par exemple:

Ecrire une fonction prenant en entrée une telle liste de mots liste_mots et renvoyant en sortie la sous-liste ne contenant que les mots de la liste d'entrée qui contiennent plus de voyelles que de consonnes. La liste de sortie sera créée en compréhension.

Exercice 2

Question1

Ecrire une fonction prenant en paramètre une chaîne de caractères (constituée ici encore uniquement de minuscules de l'alphabet, sans accent) et renvoyant True si la chaîne ne contient que des lettres distinctes (et False sinon).

Une autre version:

Une autre version:

Remarque.

Remarque suite à une question que l'un de vous a posé: pourquoi `tous_distincts('')` devrait valoir `True` ? Autrement dit, pourquoi décide-t-on d'affirmer qu'une chaîne ne présentant aucun caractère a tous ses caractères distincts ? On a l'air d'affirmer quelque chose qui n'a pas de sens. Pour comprendre cela, demandez vous ce qu'est une chaîne pour laquelle les caractères ne sont pas tous distincts. C'est une chaîne pour laquelle il existe au moins deux caractères égaux. Pour une chaîne vide, peut-il exister deux caractères égaux ? La réponse est évidemment non. Conséquence: les caractères de la chaîne vide sont considérés comme tous distincts. Il s'agit là d'un raisonnement logique fréquent en mathématiques et informatique qu'il est plus aisé de comprendre après avoir cherché à programmer cela: le programme ci-dessus cherchant à reconnaître les chaînes à caractères tous distincts correspond bien à ce raisonnement:on élimine les chaînes pour lesquelles on rencontre deux fois le même caractère et on garde les autres chaînes (en particulier, on garde la chaîne vide).

Question 2

Exercice 3

Ecrire une fonction prenant en paramètre une liste de mots et renvoyant en sortie la sous-liste ne contenant que les mots de la liste initiale ne contenant pas la lettre 'e'.

Pythn permet la version plus brève suivante:

Exercice 4

Question 1

Ecrire le corps de la fonction inferieur_aux_suivants ci-dessous.

Question 2

Ecrire le corps de la fonction filtre4 spécifiée par sa chaîne de documentation ci-dessous.

Exercice 5

Question 1

Ecrire un corps pour la fonction est_triée ci-dessous.

Question 2

Exercice 6

Dans cette question, vous créerez quelques listes en compréhension (sans création de fonction).

On dispose d'une liste films de tuples de la forme: (identifiant, nom de film, année de réalisation):

Remarque: ce que l'on appelle ici identifiant est simplement un numéro créé en créant la table, chaque numéro correspond à un et un seul film et permet donc d'identifier le film sans ambiguïté.

Lorsqu'on crée une base de données, on crée très souvent de tels identifiants car les attributs renseignés pour l'objet ne permettent souvent pas de le distinguer à coup sûr d'un autre (par exemple: deux films ont le même titre...).

La suite de ce commentaire, pour ceux qui continueront NSI, dans le cours de base de données de terminale.

Les tuples de la liste personnes : (identifiant, nom, prénom, année de naissance).

Les tuples de la liste réalisation sont des couples (identifiant du film, identifiant de la personne réalisateur):

Les tuples de la liste acteurs sont des couples (identifiant d'un film, identifiant d'une personne), signifiant que la personne joue un rôle dans le film.

Question 1

Créer la liste des films (sous la forme: liste des couples (nom du film, année de tournage) ) tournés après l'an 2000.

Question 2

Créer la liste des acteurs (sous la forme (nom, prénom)) ayant joué dans un film nommé "Dune".

Question 3

Créer la liste des couples (nom du film, date de réalisation) dans lesquels l'acteur Ronny Cox a un rôle.

N'oubliez pas de sauvegarder régulièrement votre travail ! Et de sauvegarder avant de quitter.