Bienvenue sur python.gecif.net | LE SITE POUR APPRENDRE A PROGRAMMER EN PYTHON | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Application 1 : création de l'ensemble vide Proposez une solution qui affecte à la variable vide l'ensemble vide, c'est-à-dire le seul ensemble (de type set) qui ne possède aucun élément. En testant votre variable vide vous devriez obtenir les résultats suivants : >>> type(vide)
Application 2 : supression des doublons dans une liste On part d'une liste liste1 contenant des doublons. Par exemple : liste1=[1,2,4,1,2,3,2,3,2,1,4,1,2,3,3,4,1,2] Proposez une solution simple affectant à la variable liste2 les éléments de liste1 sans les doublons, c'est-à-dire en un seul exemplaire chacun. Par exemple si au départ liste1=[1,2,4,1,2,3,2,3,2,1,4,1,2,3,3,4,1,2] alors liste2 devra être égale à [1, 2, 3, 4]
Application 3 : création d'un dictionniare à partir de 2 listes On part de 2 listes représentant respectivement les clés et les valeurs associées d'un dictionniare. La liste des clés est liste_cle=["ville","couleur","taille"] La liste des valeurs est liste_valeur=["Paris","rouge",200] Proposez une solution qui, à partir de ces 2 listes, affecte à la variable dico un dictionniare à 3 éléments (3 paires clé/valeur). En testant votre variable dico vous devriez obtenir les renseignements suivants : >>> type(dico)
Application 4 : comparaison entre deux variables de différents types Nous connaissons déjà les 6 opérateurs de comparaison :
Appliqués à 2 variables a et b ces opérateurs renvoient une valeur booléenne : True ou False. Si les variables a et b sont des valeurs numériques (nombres entiers ou nombres décimaux) le résultat est sans surprise et déjà connu. Or Python permet également d'effectuer la comparaison entre deux variables non numériques (autres que int et float). Que donne alors chacun de ces 6 opérateurs de comparaison dans les cas suivants :
Vous effectuerez tous vos tests directement dans la console de Python en observant bien les résultats et en testant les différents types les uns après les autres, tout en donnant différentes valeurs aux variables a et b avant de les comparer. A part dans le cas où a et b sont des nombres (int ou float) dans quel cas la comparaison est-elle autorisée entre deux types différents ? Vous noterez dans une fiche papier sous forme d'un tableau de synthèse l'ensemble de vos remarques résumant le mécanisme mis en place par Python lors de la comparaison de deux variables non numériques.
Dans EduPython, créez un fichier texte contenant les 5 lignes suivantes (par copier/coller) puis enregistrez-le sous le nom fichier.txt dans votre répertoire de travail : Ceci est un fichier texte 1 - Dans la console de Python, configurez votre répertoire courant grâce à la méthode chdir() du module os, puis ouvrez votre fichier en lecture seule. 2 - Affichez dans la console chacune des 5 lignes de ce fichier texte, en corrigeant les éventuelles erreurs de décodages des caractères accentués. Nous voulons ici un affichage clair et formaté de chaque ligne, sans crochet, ni \n visible, ni simple quote, etc. Voici le résultat attendu dans la console : Ceci est un fichier texte 3 - Une fois au point, réalisez un programme Python qui ouvre en lecture seule et qui affiche proprement dans la console toutes les lignes de ce fichier texte. 4 - Insérez à la main quelques nouvelles lignes dans le fichier texte en l'éditant dans EduPython et en utilisant des caractères spéciaux tel que l'Euro, l'e dans l'a (minuscule et majuscule) l'e dans l'o (minuscule et majuscule), les caractères accentués ou le cédille (minuscule et majuscule), puis vérifiez si votre programme affiche toujours correctement toutes les lignes de ce fichier texte. Voici quelques exemples de nouvelles lignes à tester dans votre fichier : Un cœur en mosaïques coûte à peu près 8 € 5 - Si votre fichier texte est actuellement encodé en ANSI, encodez-le en UTF-8 puis adaptez votre programme pour pouvoir le lire et l'afficher sans problème au niveau des caractères spéciaux ou accentués. Si votre fichier texte est actuellement encodé en UTF-8, encodez-le en ANSI puis adaptez votre programme pour pouvoir le lire et l'afficher sans problème au niveau des caractères spéciaux ou accentués. 6 - Lorsque le fichier texte est encodé en ANSI, les jeux de caractères suivants sont-il tous équivalents pour une lecture correcte des caractères spéciaux et accentués ? fic=open('fichier.txt','r',encoding='cp1252') S'il y avait un seul nom de jeu de caractères à utiliser pour ouvrir dans Python avec la fonction open() un fichier codé en ANSI lequel serait-ce ? Notez votre conclusion dans votre cahier.
Nous allons maintenant créer un programme qui va écrire un certain nombre de lignes dans un fichier texte. Le programme devra demander le nom du fichier texte à créer ainsi que le nombre de lignes à saisir et à écrire dans le fichier. Chaque ligne sera une petite phrase simple saisie sous forme d'une chaîne de caractères pouvant contenir des caractères accentués. 1 - écrire ce programme qui demande le nom du fichier à créer puis le nombre de ligne à saisir et qui les écrit dans le fichier 2 - améliorer votre programme pour qu'il affiche à la fin le contenu du fichier en précisant le nombre de lignes affichés 3 - améliorer le programme afin qu'en plus du nom du fichier il demande au début si on souhaite créer un nouveau fichier (en écrasant le fichier existant) ou si on souhaite ajouter des nouvelles lignes à la fin du fichier 4 - améliorer le programme pour qu'il propose un simple mode de lecture du ficher, sans le modifier, en plus des 2 modes d'écriture. On poura pour cela demander au démarage de saisir un caractère en fonction de l'action désirée :
Dans les 3 cas on précisera le nom du fichier à traiter. Solution des 4 premières questions de l'Application 6 5 - la méthode listdir() du module os de Python permet d'obtenir sous forme de liste l'ensemble des fichiers présents dans le répertoire courant. Exemple : >>> os.listdir() Problème : lors de la lecture d'un fichier, si l'utilisateur saisit le nom d'un fichier qui n'existe pas, Python renverra une erreur lors de l'ouverture du fichier par open('fichier.txt','r') Solution : lorsque l'utilisateur demande une simple lecture du fichier, vérifiez si le fichier existe bien sur le disque avant de l'ouvrir en lecture en comparant le nom saisie par l'utilisateur à la liste des fichiers renvoyées par os.listdir() 6 - Afin de faciliter la saisie des noms de fichiers dans le cas d'un fichier déjà existant, proposez à l'utilisateur de saisir un simple numéro en lui présentant dans la console la liste des fichiers déjà existants dans le répertoire courant en exploitant la liste renvoyées par os.listdir(). Exemple de présentation attendue : 1 : fichier.txt 7 - Lors de la création d'un nouveau fichier, en plus du nom de fichier demandez à l'utilisateur le type d'encodage : ANSI ou UTF-8 ? Après cette modification votre programme Python doit être capable de créer, de compléter ou de lire aussi bien des fichiers codés en UTF-8 qu'en ANSI, en détectant automatiquement l'encodage du fichier dans le cas de la lecture ou de l'ajout de nouvelles lignes dans un ficher déjà existant. 8 - Proposez une solution simple pour supprimer une ligne dans le fichier : affichage numérotée de toutes les lignes existantes afin que l'utilisateur saisisse seulement le numéro de la ligne à détruire.
Un fichier CSV est un fichier texte dans lequel chaque ligne correspond à un enregistrement, et où dans chaque enregistrement les valeurs sont séparées par une virgule. Le sigle CSV signifie Comma-Separated Values et désigne un fichier dont les valeurs sont séparées par des virgules. Nous allons nous intéresser aux renseignements suivants concernant des personnes (chaque enregistrement contient 6 valeurs) :
Voici un exemple d'enregistrement où chacun des 6 champs (ou 6 valeurs) est séparé par une virgule : laurent,DUPONT,5 rue de la liberté,75000,PARIS,0611223344 Et voici un exemple de fichier CSV, chacune des lignes contenant un nouvel enregistrement des informations concernant une nouvelle personne : laurent,DUPONT,5 rue de la liberté,75000,PARIS,0611223344 Enregistrez ce fichier CSV de base dans un fichier texte nommé fic_csv.txt et en l'encodant en ANSI. Avec une présentation adaptée, voici les informations contenues dans notre fichier CSV :
Une telle organisation des données s'appelle une organisation des données en table.
1 - Écrire un programme en Python permettant de lire ce fichier CSV et d'afficher proprement les informations qu'il contient. Après la lecture du fichier l'ensemble des informations sera enregistré en mémoire dans une structure de données appropriée. La structure de données correspondant à un fichier CSV est une liste de dictionnaires :
Les 6 clés des dictionnaire seront les suivantes afin de rappeler clairement l'étiquette de chaque champ :
Rappel : les clés d'un dictionnaire sont de simple étiquettes. Il ne s'agit pas de phrases complètes, elles s'écrive entièrement en minuscule, en un seul mot, et en utilisant évantuellement une abréviation ou un acronyme simple (exemple : cp pour code postal). Une fois la structure de données remplie c'est en la consultant qu'on procèdera à un affichage clair, ordonné et formaté des imformations. Voici un exemple d'affichage formaté : Laurent DUPONT Solution de la question 1 de l'Application 7 2 - Améliorez votre programme afin qu'il permettent d'ajouter de nouveaux enregistrements dans le fichier CSV. Pour chaque nouvel enregistrement la saisie des 6 champs sera clairement demandée, et le contenu formaté du fichier sera affiché après chaque saisie. Un menu simple dans la console présentera à l'utilisateur les différentes possibilités afin qu'il ne saisisse qu'un simple numéro selon son choix : Que voulez-vous faire ? 3 - Améliorez votre programme afin de n'afficher qu'un champ particulier : prénom, nom, adresse, code postal, ville ou numéro de téléphone. Un menu simple dans la console présentera à l'utilisateur les différentes possibilités afin qu'il ne saisisse qu'un simple numéro selon son choix : Quels champs voulez-vous afficher ?
4 - Améliorez votre programme afin d'afficher les informations du fichier mais en les triant selon un champ particuler (exemple : affichage dans l'odre alphabétique de NOM, tri dans l'ordre décroissant des codes postaux, etc.). Il convient alors de poser 2 questions à l'utilisateur pour connaître son choix : Selon quel champs voulez-vous trier les enregistrements ?
Dans quel ordre voulez-vous trier les informations ?
5 - Améliorez votre programme afin de filtrer l'affichage, en affichant seulement les enregistrements correspondant à un critère précis (exemple : seulement les enregistrements contenant 'rue' dans leur adresse, seulement les codes postaux commençant par 33, etc.). Là encore, plusieurs questions sont peut-être nécesssaires pour connaître la volonté de l'utilisateur. 6 - Proposez une solution simple pour supprimer une ligne dans le fichier : affichage numérotée de toutes les lignes existantes afin que l'utilisateur saisisse seulement le numéro de la ligne à détruire. Le menu principal affiché au lancement du programme s'est évidemment affiné au fil des évolutions : Que voulez-vous faire ?
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|