TP - Représentation ASCII décimale☘
Dans le dossier [NSI]
, créez le dossier [A04-Caracteres]
.
Téléchargez le fichier « à trous » TPA04.11.py (clic droit -> [Enregistrer la cible du lien sous]) et enregistrez-le dans ce dossier.
Consignes communes à chaque partie
Le programme principal contient un appel au module doctest
:
##----- Programme principal et tests -----##
if __name__ == '__main__':
import doctest
doctest.testmod()
Il faudra ajouter un plan de test (avec affichage) des fonctions dans le programme principal. Pensez à demander au professeur de vous aider pour écrire et valider ce plan de test...
Ce TP en trois parties a pour but de vous familiariser avec les représentations ASCII décimales.
Important
Dans ce TP, vous devrez vous servir des fonctions ord()
et chr()
de Python.
Partie A - Types de caractères☘
Dans cette partie, il vous faut compléter les définitions de fonctions permettant de déterminer la nature d'un caractère.
-
Complétez le corps de la fonction
est_un_chiffre()
en respectant ses spécifications.1 2 3 4 5 6 7 8 9 10 11 12 13 14
def est_un_chiffre(carac): """ carac – str, un caractère Sortie: bool – True si le caractère est celui d'un chiffre, False sinon >>> est_un_chiffre('4') True >>> est_un_chiffre('a') False >>> est_un_chiffre('!') False >>> est_un_chiffre('T') False """
Test d'assertion
Cette fonction devra lever l'erreur suivante :
>>> est_un_chiffre('') AssertionError: Le paramètre doit être un seul caractère >>> est_un_chiffre('ab') AssertionError: Le paramètre doit être un seul caractère
-
Complétez le corps de la fonction
est_une_minuscule()
en respectant ses spécifications.1 2 3 4 5 6 7 8 9 10 11 12 13 14
def est_une_minuscule(carac): """ carac – str, un caractère Sortie: bool – True si le caractère est celui d'une lettre minuscule, False sinon >>> est_une_minuscule('4') False >>> est_une_minuscule('a') True >>> est_une_minuscule('!') False >>> est_une_minuscule('T') False """
Test d'assertion
Cette fonction devra lever l'erreur suivante :
>>> est_une_minuscule('') AssertionError: Le paramètre doit être un seul caractère >>> est_une_minuscule('le') AssertionError: Le paramètre doit être un seul caractère
-
Complétez le corps de la fonction
est_une_majuscule()
en respectant ses spécifications.1 2 3 4 5 6 7 8 9 10 11 12 13 14
def est_une_majuscule(carac): """ carac – str, un caractère Sortie: bool – True si le caractère est celui d'une lettre majuscule, False sinon >>> est_une_majuscule('4') False >>> est_une_majuscule('a') False >>> est_une_majuscule('!') False >>> est_une_majuscule('T') True """
Test d'assertion
Cette fonction devra lever l'erreur suivante :
>>> est_une_majuscule('') AssertionError: Le paramètre doit être un seul caractère >>> est_une_majuscule('Il') AssertionError: Le paramètre doit être un seul caractère
-
Complétez le corps de la fonction
est_une_lettre()
en respectant ses spécifications.1 2 3 4 5 6 7 8 9 10 11 12 13 14
def est_une_lettre(carac): """ carac – str, un caractère Sortie: bool – True si le caractère est celui d'une lettre, False sinon >>> est_une_lettre('4') False >>> est_une_lettre('a') True >>> est_une_lettre('!') False >>> est_une_lettre('T') True """
Partie B - Format de texte☘
Dans cette partie, on manipule des chaînes de caractères à l'aide des
fonctions ord()
et chr()
.
-
Complétez le corps de la fonction
texte_en_decimal()
en respectant ses spécifications.1 2 3 4 5 6 7 8
def texte_en_decimal(texte): """ texte – str, une chaîne de caractères de la table ASCII Sortie: list – tableau des représentation décimales ASCII de chaque caractère de texte >>> texte_en_decimal('Exemple !') [69, 120, 101, 109, 112, 108, 101, 32, 33] """
-
Complétez le corps de la fonction
decimal_en_texte()
en respectant ses spécifications.1 2 3 4 5 6 7
def decimal_en_texte(tab): """ tab – list, tableau contenant des représentations décimales de caractères ASCII Sortie: str – chaîne de caractères correspondante >>> decimal_en_texte([69, 120, 101, 109, 112, 108, 101, 32, 33]) 'Exemple !' """
-
Complétez le corps de la fonction
majuscules()
en respectant ses spécifications.1 2 3 4 5 6 7 8 9
def majuscules(texte): """ texte – str, une chaîne de caractères de la table ASCII Sortie: str – chaîne de caractères correspondant à ceux de texte mais tous écrits en majuscule. Si le caractère n'est pas une lettre minuscule, il n'est pas modifié. >>> majuscules('Voici un exemple !') 'VOICI UN EXEMPLE !' """
Une piste
Comment passer de la représentation décimale ASCII d'un caractère minuscule à celle du caractère majuscule correspondant ?
-
Complétez le corps de la fonction
majuscules()
en respectant ses spécifications.1 2 3 4 5 6 7 8 9
def minuscules(texte): """ texte – str, une chaîne de caractères de la table ASCII Sortie: str – chaîne de caractères correspondant à ceux de texte mais tous écrits en minuscule. Si le caractère n'est pas une lettre majuscule, il n'est pas modifié. >>> minuscules('VoIcI uN eXeMpLe !') 'voici un exemple !' """
Une piste
Comment passer de la représentation décimale ASCII d'un caractère majuscule à celle du caractère minuscule correspondant ?
-
Complétez le corps de la fonction
premiere_majuscule()
en respectant ses spécifications.1 2 3 4 5 6 7 8 9
def premiere_majuscule(texte): """ texte – str, une chaîne de caractères non vide de la table ASCII Sortie: str – chaîne de caractères correspondant à ceux de texte avec le premier caractère écrit en majuscule si celui-ci est une lettre mincuscule >>> premiere_majuscule('voila !') 'Voila !' """
Test d'assertion
Cette fonction devra lever l'erreur suivante :
>>> premiere_majuscule('') AssertionError: La chaîne ne peut pas être vide
Partie C - Cryptage ROTn☘
Les fonctions de cette partie permettront de coder, puis décoder un message selon l'algorithme appelé ROTn, basé sur le chiffre de César.
-
Complétez le corps de la fonction
decale_chiffre()
en respectant ses spécifications.1 2 3 4 5 6 7 8 9 10 11 12 13 14
def decale_chiffre(carac, n): """ carac – str, un caractère, chiffre n - int, entier Sortie: str – chiffre qui correspond au décalage de carac dans la table ASCII. Les caractères sont considérés circulairement, c'est-à-dire '0' est le suivant de '9' >>> decale_chiffre('4', 3) '7' >>> decale_chiffre('4', -7) '7' >>> decale_chiffre('4', 48) '2' """
Une piste
Le décalage est circulaire. Que se passe-t-il si
n
vaut 10 ? Sin
vaut 20 ? etc...Une autre piste
La valeur de représentation du caractère à obtenir pourrait dépasser celle de la représentation de
'9'
. Comment faire pour revenir à la valeur de la représentation de'0'
? -
Complétez le corps de la fonction
decale_minuscule()
en respectant ses spécifications.1 2 3 4 5 6 7 8 9 10 11 12 13 14
def decale_minuscule(carac, n): """ carac – str, un caractère, lettre minuscule n - int, entier Sortie: str – lettre minuscule qui correspond au décalage de carac dans la table ASCII. Les caractères sont considérés circulairement, c'est-à-dire 'a' est le suivant de 'z' >>> decale_minuscule('a', 13) 'n' >>> decale_minuscule('a', -7) 't' >>> decale_minuscule('r', 42) 'h' """
Une piste
Le décalage est circulaire. Que se passe-t-il si
n
vaut 26 ? Sin
vaut 52 ? etc...Une autre piste
La valeur de représentation du caractère à obtenir pourrait dépasser celle de la représentation de
'z'
. Comment faire pour revenir à la valeur de la représentation de'a'
? -
Complétez le corps de la fonction
decale_majuscule()
en respectant ses spécifications.1 2 3 4 5 6 7 8 9 10 11 12 13 14
def decale_majuscule(carac, n): """ carac – str, un caractère, lettre majuscule n - int, entier Sortie: str – lettre majuscule qui correspond au décalage de carac dans la table ASCII. Les caractères sont considérés circulairement, c'est-à-dire 'A' est le suivant de 'Z' >>> decale_majuscule('A', 13) 'N' >>> decale_majuscule('A', -7) 'T' >>> decale_majuscule('R', 42) 'H' """
-
Complétez le corps de la fonction
crypt_ROTn()
en respectant ses spécifications.1 2 3 4 5 6 7 8
def crypt_ROTn(texte, n): """ texte – str, une chaîne de caractères de la table ASCII n - int, entier positif ou nul Sortie: str – cryptage de texte selon l'algorithme ROTn >>> crypt_ROTn('Voici 5 exemples !', 217) 'Exrlr 2 ngnvyunb !' """
Une piste
Si le caractère n'est ni un chiffre, ni une lettre alors il reste inchangé.
-
Complétez le corps de la fonction
decrypt_ROTn()
en respectant ses spécifications.1 2 3 4 5 6 7 8
def decrypt_ROTn(texte, n): """ texte – str, une chaîne de caractères de la table ASCII n - int, entier positif ou nul Sortie: str – décryptage de texte selon l'algorithme ROTn >>> decrypt_ROTn('Exrlr 2 ngnvyunb !', 217) 'Voici 5 exemples !' """
Une piste
Normalement, une seule instruction suffit...
Exemple
Utilisez cette fonction pour décrypter le message suivant :
'Uktoh ! Ohnl toxs ybgb vx MI.'