Bienvenue sur python.gecif.net | LE SITE POUR APPRENDRE A PROGRAMMER EN PYTHON | ||||||||
|
||||||||
Application 1 : mise en majuscules Proposez un programme qui demande une chaîne de caractères à l'utilisateur, puis qui affiche la chaîne entièrement en MAJUSCULES. Exemple : Si l'utilisateur saisie la chaîne Je programme en Python votre programme doit afficher JE PROGRAMME EN PYTHON
Application 2 : mise en minuscules Proposez un programme qui demande une chaîne de caractères à l'utilisateur, puis qui affiche la chaîne entièrement en minuscules. Exemple : Si l'utilisateur saisie la chaîne JE PROGRAMME EN PYTHON votre programme doit afficher je programme en python Autre exemple : Si l'utilisateur saisie la chaîne Je programme en Python votre programme doit afficher je programme en python
Application 3 : inversion d'une chaîne Proposez un programme qui demande une chaîne de caractères à l'utilisateur, puis qui affiche la chaîne de caractère à l'envers, c'est-à-dire en inversant l'ordre des caractères. Exemple : Si l'utilisateur saisie la chaîne Je programme en Python votre programme doit afficher nohtyP ne emmargorp eJ Remarque : la chaîne inversée doit être affichée sur une seule ligne (et non un caractère par ligne).
Application 4 : des mots et des lettres Proposez un programme qui demande une chaîne de caractères à l'utilisateur, puis qui affiche le nombre de caractères, le nombre de lettres, le nombre de mots et le nombre d'espaces contenus dans la phrase saisie. Exemple : Si l'utilisateur saisie la chaîne Je programme en Python votre programme doit afficher : cette chaîne de caractère contient 22 caractères, 19 lettres, 4 mots et 3 espaces
Application 5 : analyse d'une phrase Voici une chaîne de caractères représentant une phrase : phrase="Le travail de la pensée ressemble au forage d’un puits ; l'eau est trouble d'abord, puis elle se clarifie." Copier cette ligne dans un nouveau programme Python puis améliorer votre programme afin d'afficher petit à petit les informations suivantes : 1 - Afficher la phrase entière. 2 - Afficher le nombre de caractères utilisés dans la phrase. 3 - Afficher le nombre de mots composant cette phrase. 4 - Afficher le nombre d'espace présent dans cette phrase. 5 - Afficher le nombre de caractères de ponctuation présent dans cette phrase. 6 - Afficher le nombre de lettres présent dans cette phrase. 7 - Afficher les lettres de l'alphabet qui ne sont pas présentes dans cette phrase. 8 - Afficher le nombre de voyelles et le nombre de consonnes présents dans cette phrase.
1 - Proposez un programme qui affiche les caractères n°128 à n°255 et leur code en utilisant le jeu de caractères cp1252. Comparez votre résultat à la table ASCII étendue ANSI sur papier. Exemple d'affichage attendu dans la console : 130 : ‚ Problème : le jeu de caractères cp1252 n'est pas complet : certains caractères sont inexistants. C'est le cas par exemple du caractère 0x81 : aucun caractère possédant le numéro 0x81 n'est présent dans la table de caractères cp1252. Si on demande à Python de décoder le code '\x81' en utilisant la table ASCII étendue cp1252 il renvoie une erreur indiquant clairement qu'il ne peut pas décoder la valeur 0x81 avec cette page de code : >>> b'\x81'.decode('cp1252') Solution : pour éviter cette erreur il faut passer un second paramètre de valeur 'ignore' à la méthode decode(). Ainsi si le caractère n'existe pas la méthode decode() renvoie une chaîne vide et ne provoque plus d'erreur : >>> b'\x81'.decode('cp1252','ignore') Et si le caractère existe elle retourne bien le bon caractère. Exemple avec le caractère 'copyright' de code 0xA9 : >>> b'\xa9'.decode('cp1252','ignore') Il est alors possible de savoir si le caractère existe (chaîne renvoyée non vide) ou n'existe pas (chaîne vide renvoyée) en testant le retour de la méthode decode(). Voici par exemple un programme qui recherche tous les caractères "vides" de la page de code cp1252 : i=0
2 - Proposez un programme qui affiche les caractères n°128 à n°255 et leur code en utilisant le jeu de caractères cp437. Comparez votre résultat à la table ASCII étendue OEM sur papier. 3 - Les jeux de caractères suivants sont "similaires" et correspondent en grande partie à "la table ASCII étendue ANSI" :
Mais tous ces jeux de caractères sont-ils en tout point identiques ? Pour y répondre nous allons les comparer afin d'en extraire les différences. Pour cela nous allons utiliser les ensembles en Python. En effet, si nous créons un ensemble par page de code, il est ensuite très facile d'en faire ressortir les points communs ou les différences grâce aux opérateurs de Python appliqués aux ensembles (intersection, union, différence symétrique et différence). Exemple : quelles sont les différences entre les jeux de caractères iso8859 et iso8859-15 ? Pour le savoir nous allons créer 2 ensembles : e1 pour la page de code iso8859 et e2 pour la page de code iso8859-15. Mais que mettre dans ces ensembles ? Les caractères seuls ? Les codes numériques seuls ? Ou les deux ? En fait nos avons besoin d'un couple de données rassemblant un caractère et son code numérique. Pour cela nous allons utiliser des tuples. Chaque ensemble contiendra 256 tuples correspondant aux 256 caractères de la page de code avec leur valeur numérique. Créons l'ensemble e1 contenant 256 tuples correspondant à la page de code iso8859 : e1=set() Créons l'ensemble e2 contenant 256 tuples correspondant à la page de code iso8859-15 : e2=set() On peut désormais facilement afficher les différences entre ces deux pages de code grâce aux opérateurs sur les ensembles : Les caractères (les tuples) différents entre iso8859 et iso8859-15 : >>> e1^e2 Les caractères de iso8859 qui ne sont pas dans iso8859-15 : >>> e1-e2 Les caractères de iso8859-15 qui ne sont pas dans iso8859 : >>> e2-e1 Comme les ensembles ne sont pas ordonnés, il est possible que l'affichage ne soit pas dans l'ordre des codes numériques. Pour forcer un affichage ordonné selon les codes des caractères il faut convertir les ensembles en liste, trier les listes dans l'ordre croissant, puis afficher la liste triée. Voici le programme complet qui compare les jeux de caractères iso8859 et iso8859-15 en affichant les résultats sous forme de listes ordonnées : # Comparaison des jeux de caractères iso8859 et iso8859-15 grâce aux ensembles Et voici le résultat de ce programme affiché dans la console : Il y a 16 différences entre iso8859 et iso8859-15. Les voici : On constate qu'il y a 8 caractères différents entre les pages de code iso8859 et iso8859-15. Cette comparaison des jeux de caractères iso8859 et iso8859-15 nous montre une amélioration fondamendale de cette page de code (en rouge ci-dessus et à noter) : dans la version iso8859-15 les caractères Euro (€), e dans l'eau majuscule (Œ) et e dans l'o minuscule (œ) ont été rajoutés en ramplacement d'anciens caractères qui n'étaient pas utilisés : ces 3 caractères €, Œ et œ n'esistaient pas dans la version d'origine iso8859.
Proposez un programme qui affiche seulement les caractères différents entre la page de code 'cp1252' et la page de code 'latin' (le même code numérique ne donne pas le même caractère dans les deux pages de code). Proposez un programme qui affiche seulement les caractères différents entre la page de code 'cp1252' et la page de code 'iso8859'. Proposez un programme qui affiche seulement les caractères différents entre la page de code 'cp1252' et la page de code 'iso8859-15'. Quelles sont les différences entre les jeux de caractères iso8859 et iso8859-15 ? Relevez par écrit et retenez le nombre de différences qu'il existe entre ces différents jeux de caractères.
4 - Comment se code le caractère € (symbole monétaire de l'Euro) avec les jeux de caractères suivants :
5 - Quelles sont les différences entre les pages de code cp850 (utilisée en Europe) et cp437 (utilisée en Amérique) ?
Relevez par écrit et retenez le nombre de différences qu'il existe entre ces différents jeux de caractères.
En appuyant sur la touche Alt du clavier et en saisissant le code d'un caractère en décimal sur le pavé numérique le caractère s'affiche dans la console de Python (ou dans un éditeur de texte). Par exemple si on tape Alt-65 on affiche le caractère A, car le code ASCII en décimal du caractère A est 65. Cette méthode de saisie alternative permet de saisir les milliers de nouveaux caractères en plus des caractères directs qui sont imprimés sur le clavier à partir du moment où on connaît leur code numérique en décimal. Le "Alt" de la touche Alt signifie justement "Alternative". Grâce à la touche Alt du clavier, Windows effectue alors un décodage : il convertit une valeur numérique en un caractère. Or pour tout décodage il faut utiliser un jeu de caractères bien défini. Mais quel jeu de caractères est utilisé lorsqu'on saisie un code par la méthode alternative ? Vous ferez plusieurs essais dans les intervalles de codes suivants en utilisant soit les tables ASCII étendues sur papier soit Python pour vérifier vos résultats et pour conclure en complétant et en relevant les phrases suivantes :
Suite de l'expérience, à réaliser toujours dans la console de Python :
En conclusion, combien de jeux de caractères sont utilisés lorsqu'on saisit un caractère par la méthode alternative, et dans quel intervalle exactement chacun d'entre eux est utilisé ? Dans quel format faut-il saisir le code numérique pour forcer l'utilisation de tel ou tel jeu de caractères ? Notez par écrit et retenez le résultat de votre expérience étonnante mais pas mystérieuse ...
Les caractères unicode peuvent être représentés par :
Il existe donc 3 représentations différentes pour décrire un caractère, et donc 6 transformations possibles :
Après les avoir testées dans la console de Python (en mettant en œuvre les informations données dans la partie DÉCOUVERTE), relevez clairement sur papier et retenez les 6 commandes les plus simples permettant d'effectuer chacune de ces 6 transformations en une seule ligne de code.
Le jeu de caractères Unicode évolue sans arrêt et possède aujourd'hui plusieurs milliers de caractères. Le site unicode-table.com permet de consulter tous les caractères unicode et les nouveautés, et d'obtenir le point de code de chacun d'entre eux. La page Unicode sur le site Gecif.net permet également de consulter les caractères unicode. En effectuant des recherches sur ces sites trouvez le point de code des caractères suivants et relevez-les :
Parmi ces caractères, lesquels sont affichables par Python dans la console ? En fouillant le jeu de caractères unicode (qui contient plus de 100 000 caractères en tout), trouvez quelques nouveaux caractères, symboles, ou pictogrammes étonnants ou originaux et relevez leur nom et leur point de code. Ces nouveaux caractères sont-ils tous affichables dans la console de Python ? Essayez de trouver des caractères unicode affichables dans la console de Python et dont l'encodage en UTF-8 s'écrit :
Quel est le plus grand point de code dont le caractère est encore affichable dans la console de Python et quel est ce caractère ? Recherchez une solution afin d'afficher sur l'ordinateur les caractères unicode non affichables dans la console de Pyhton.
|
||||||||
|