C4.1 : Les chaines de caractères

Prendre connaissance

Prendre connaissance de Mémo : Les chaines de caractères.

Application : Création des chaines de caractères

Application II_app1 : Ascii art

Créer une variable qui contiennent l'ascii-art suivants :

       ^
       |
       +
       |
       |
       |
       |
       |
       A
      ===                ________
     /EEE\               |______|
    //EEE\\              |*(  )*|
___//_____\\_____________|O|  |O|_______

Application II_app2 : Un peut de politesse

Sur feuille

1) Indiquer la valeur de la variable chaine en fin d'exécution du code ci dessous.

chaine = "Bonjour"
prenom = "Aline"
chaine = prenom + chaine

2) Modifier la troisième ligne de ce code pour que la variable chaine contienne "Bonjour Aline".

Afficher la correction
chaine = "Bonjour"
prenom = "Aline"
chaine = prenom + " " + chaine

Application II_app3

Compléter le code ci-dessous pour créer la variable phrase uniquement à partir des variables disponibles.

mot1 = "Bonjour"
mot2 = "Hector"
mot3 = "!"
mot4 = " "
phrase = ...  # Phrase doit contenir "Bonjour Hector !"
Afficher la correction
mot1 = "Bonjour"
mot2 = "Hector"
mot3 = "!"
mot4 = " "
phrase = mot1 + mot4 + mot2 + mot4 + mot3

Application II_app4

Compléter le code ci-dessous pour créer la variable phrase à partir des variables qui lui précèdent.

prénom = "Hector"
age = 16
phrase = ...  # "Bonjour. Je m'appelle Hector et j'ai 16 ans !"
Afficher la correction
prénom = "Hector"
age = 16
phrase = "Bonjour. Je m'appelle Hector et j'ai " + str(age) + " ans !"

Application II_app5

1) Indiquer comment on obtient le nombre de caractères d'une chaine de caractères.

2) Écrire une fonction qui prend deux chaines en paramètre et renvoie la chaine dont la longueur est la plus grande.

3) Compléter avec le programme principal qui permet de créer deux variables contenant des chaines et de tester la fonction avec ces deux variables.

Afficher la correction
def plus_longue_chaine(ch1:str, ch2:str) -> str:
    if len(ch1) >= len(ch2):
        p_l_c = ch1
    else:
        p_l_c = ch2
    return p_l_c

# Programme principal
c1 = "aaa"
c2 = "aa"
c = plus_longue_chaine(c1, c2)

Application II_app6 : Immatriculation d'un véhicule

Plaque d'immatriculation d'un véhicule

1) Écrire la fonction immatriculation(c1:str, nb:int, c2:str) -> str pour qu'elle renvoie une chaine correspondant à l'immatriculation d'un véhicule sous la forme cc-nnn-cc.

2) Vérifier que immatriculation('LC', 546, 'GB') renvoie bien 'LC-546-GB'

Afficher la correction
def immatriculation(c1:str, nb:int, c2:str) -> str:
    return c1 + "-" + str(nb) + "-" + c2

# Programme principal
print(immatriculation('LC', 546, 'GB') == "LC-546-GB")

Applications : Récupération d'un caractères d'une chaine

Application III_app1

Sans tester le code, indiquer ce que contiennent les variables lettre1 et lettre2 à la fin de l'exécution.

alphabet = "abcdefghijklmnopqrstuvwxyz"
lettre1 = alphabet[0]
lettre2 = alphabet[-1]

Application III_app2 : La bonne lettre de l'alphabet

On dispose de la variable alphabet.

alphabet = "abcdefghijklmnopqrstuvwxyz"

Écrire la fonction lettre(i:int) -> str qui prend un nombre entre 1 et 26 en paramètre et renvoie la lettre correspondante de l'alphabet.

Ainsi lettre(1) doit renvoyer a et lettre(26) doit renvoyer z.

Afficher la correction
alphabet = "abcdefghijklmnopqrstuvwxyz"
def lettre(i:int) -> str:
    return alphabet[i-1]

# Programme principal
print(lettre(1) == "a")
print(lettre(26) == "z")

Application III_app3 : Une consonne au hasard

Écrire une fonction qui renvoie une consonne au hasard. Pour cela, on pourra utiliser une chaine de caractères qui ne contient que les consonnes.

Afficher la correction
from random import randint

def consonne() -> str:
    consonnes = "bcdfghjklmnpqrstvwxz"
    position_aleatoire = randint(0,len(consonnes)-1)
    consonne = consonnes[position_aleatoire]
    return consonne

Applications : Test d'appartenance

Application IV_app1

Sans tester le code, indiquer le contenu des différentes variables presence_ à la fin de l'exécution.

demi_alphabet = "abcdefghijklm"
presence1 = 'a' in demi_alphabet
presence2 = 'o' in demi_alphabet
presence3 = 'ab' in demi_alphabet
chaine = 'ab'
presence4 = chaine in demi_alphabet
presence5 = 'mn' in demi_alphabet

Application IV_app2 : Un prénom qui contient la lettre a

1) Écrire une fonction prédicat contient_a(prenom:str) -> bool qui teste la présence de la lettre a dans une chaine de caractères ne contenant que des minuscules.

2) Améliorer la fonction pour que la chaine de caractères puisse contenir des minuscules comme des majuscules.

Si vous avez tout fini : Autres actions possibles sur les chaines

Application V_app1

Voici un extrait du roman "La disparition" de George Perec :

Anton Voyl n'arrivait pas à dormir. Il alluma. Son Jaz marquait minuit vingt. Il poussa un profond soupir, s'assit dans son lit, s'appuyant sur son polochon. Il prit un roman, il l'ouvrit, il lut; mais il n'y saisissait qu'un imbroglio confus, il butait à tout instant sur un mot dont il ignorait la signification.

Il abandonna son roman sur son lit. Il alla à son lavabo ; il mouilla un gant qu'il passa sur son front, sur son cou.

Son pouls battait trop fort. Il avait chaud. Il ouvrit son vasistas, scruta la nuit. Il faisait doux. Un bruit indistinct montait du faubourg. Un carillon, plus lourd qu'un glas, plus sourd qu'un tocsin, plus profond qu'un bourdon, non loin, sonna trois coups. Du canal Saint-Martin, un clapotis plaintif signalait un chaland qui passait.

Sur l'abattant du vasistas, un animal au thorax indigo, à l'aiguillon safran, ni un cafard, ni un charançon, mais plutôt un artison, s'avançait, traînant un brin d'alfa. Il s'approcha, voulant l'aplatir d'un coup vif, mais l'animal prit son vol, disparaissant dans la nuit avant qu'il ait pu l'assaillir.

Écrire un programme qui permet de déterminer le nombre de 'e' dans cet extrait.

Application V_app2

Écrire une fonction qui prend une chaine de caractères en paramètre et renvoie le nombre de voyelles de cette chaine.