Commit a6da8c1e authored by BERNHARD Delphine's avatar BERNHARD Delphine
Browse files

Ajout cours 3

parent 0fc6590a
%% Cell type:markdown id: tags:
# Les chaînes de caractères
## Sommaire
1. [Travail préparatoire](#preparation)
1. [Initialisation des chaînes de caractères](#initialisation)
1. [Les caractères spéciaux](#caractères)
1. [Exercice : apostrophes](#ex_apostrophes)
1. [Concaténation de chaînes de caractères](#concatenation)
1. [Accès aux caractères d'une chaîne](#accès)
1. [Exercice : tranches et concaténations de chaînes](#ex_tranches)
1. [Insertion de valeurs dans une chaîne](#insertion)
1. [Chaînes vs. nombres](#nombres)
1. [Exercice : programme à corriger](#ex_corriger)
1. [Exercice : singulier d'un nom](#ex_singulier)
1. [Exercice : nombre au carré](#ex_carré)
1. [Exercice : conjugaison au présent de l'indicatif](#ex_present)
%% Cell type:markdown id: tags:
## Travail préparatoire <a name="preparation" />
1. 📺 Regardez la vidéo suivante "Chaînes de caractères - partie 1" : <a href="https://www.youtube.com/watch?v=t2DSnx0R_NI">https://www.youtube.com/watch?v=t2DSnx0R_NI</a> (⌚ durée : 11 min 03)
Mettez la vidéo sur pause dès que nécessaire et exécutez les exemples de commandes données dans la vidéo à l'aide la cellule ci-dessous (n'oubliez pas de cliquer sur "Exécuter / Run" ou SHIFT + ENTREE).
> 👉 C'est en codant que l'on apprend à coder ! 👈
%% Cell type:code id: tags:
``` python
# Test des exemples de la vidéo : taper votre code ci-dessous
```
%% Cell type:markdown id: tags:
2. 🧩 Répondez au [quiz](https://app.wooclap.com/IKUFFN/questionnaires/600855daf88c983d4b81106e) sur Wooclap
%% Cell type:markdown id: tags:
## Initialisation des chaînes de caractères <a name="initialisation"></a>
Les chaînes de caractères sont entourées par des guillemets droits, simples ou doubles. Toute la chaîne doit se trouver sur la même ligne. Pour entrer des textes sur plusieurs lignes, il faut les entourer par trois apostrophes (''')
%% Cell type:code id: tags:
``` python
haiku = '''Un vieil etang et
Une grenouille qui plonge,
Le bruit de l'eau.'''
print(haiku)
```
%% Cell type:markdown id: tags:
## Les caractères spéciaux <a name="caractères"></a>
Testez le code ci-dessous :
%% Cell type:code id: tags:
``` python
meteo = 'Il fait beau aujourd'hui'
```
%% Cell type:markdown id: tags:
L'erreur de syntaxe (`SyntaxError`) indique que l'instruction n'est pas bien formée par rapport aux règles de syntaxe propres au langage Python. En l'occurrence ici, il y a un problème avec la fermeture de la chaîne. Python identifie la fin de chaîne lorsqu'il rencontre la première apostrophe. Or la chaîne ne se termine qu'après "hui". Dans ces cas, il y a deux solutions.
La première solution consiste à entourer la chaîne par des guillemets doubles :
%% Cell type:code id: tags:
``` python
meteo = "Il fait beau aujourd'hui"
```
%% Cell type:markdown id: tags:
La deuxième solution consiste à "échapper" l'apostrophe qui se trouve dans "aujourd'hui" à l'aide du caractère d'échappement `\` :
%% Cell type:code id: tags:
``` python
meteo = 'Il fait beau aujourd\'hui'
```
%% Cell type:markdown id: tags:
## Exercice : apostrophes <a name="ex_apostrophes"></a>
Initialisez la variable `replique` avec la totalité du texte suivant coloré en vert (sans qu'il y a ait d'erreur de syntaxe bien sûr !), puis affichez `replique`:
<span style="color:green">Petit Gibus dit : "Si j'aurais su, j'aurais pas v'nu !"</span>
%% Cell type:code id: tags:
``` python
replique =
```
%% Cell type:markdown id: tags:
## Concaténation de chaînes de caractères <a name="concatenation"></a>
La concaténation consiste à "coller" des chaînes de caractères ensemble, les unes à la suite des autres. Elle se fait à l'aide du symbole `+` :
%% Cell type:code id: tags:
``` python
salutation = "Bonjour "
prenom = "Ada"
print(salutation + prenom)
```
%% Cell type:markdown id: tags:
## Accès aux caractères d'une chaîne <a name="accès"></a>
Chaque caractère d'une chaîne de caractères est associé à une position (ou rang) dans la chaîne. Le premier caractère se trouve à la position 0, le second caractère à la position 1 et ainsi de suite. Ainsi, pour extraire le cinquième caractère du mot "abracadabra", on écrit :
%% Cell type:code id: tags:
``` python
mot = "abracadabra"
cinquieme_lettre = mot[4]
```
%% Cell type:markdown id: tags:
On peut également par cette méthode extraire la sous-chaîne d'une chaîne :
%% Cell type:code id: tags:
``` python
mot = "abracadabra"
#Extraction des trois premiers caractères
trois_premiers = mot[0:3]
#Extraction des trois derniers caractères
trois_derniers = mot[-3:]
#Extraction du deuxieme au cinquième caractère
deux_cinq = mot[1:5]
```
%% Cell type:markdown id: tags:
L'image ci-dessous illustre le principe de l'extraction de sous-chaînes pour le texte "Monty Python" (Source : http://www.nltk.org/book/ch03.html) :
<img src = "https://git.unistra.fr/dbernhard/proghumanum/-/raw/master/img/string-slicing.png" />
%% Cell type:markdown id: tags:
## Exercice : tranches et concaténations de chaînes <a name="ex_tranches"></a>
%% Cell type:markdown id: tags:
Soient les deux mots ci-dessous. Donner le code qui permet d'afficher le mot "chanteur" en utilisant uniquement l'extraction de sous-chaînes et la concaténation (il est donc interdit d'utiliser des guillemets).
%% Cell type:code id: tags:
``` python
mot1 = "chanson"
mot2 = "acteur"
```
%% Cell type:markdown id: tags:
## Insertion de valeurs dans une chaîne <a name="insertion"></a>
Pour l'affichage d'un texte contenant la valeur d'une ou plusieurs variables qui ne sont pas des chaînes de caractères (un entier ou un nombre réel), il n'est pas possible d'utiliser l'opérateur de concaténation. Dans ce cas, on utilise des chaînes dites formatées (f-strings), qui permettent d'inclure des variables et même des portions de code :
%% Cell type:code id: tags:
``` python
jour = 17
mois = 9
annee = 2018
print(f"Nous sommes le {jour}/{mois}/{annee}")
print(f"Demain nous serons le {jour+1}/{mois}/{annee}")
```
%% Cell type:markdown id: tags:
## Chaînes vs. nombres <a name="nombres"></a>
Quand l'utilisateur entre un texte au clavier, le résultat sera enregistré sous forme de chaîne de caractères, même s'il s'agit d'un nombre. Ainsi, la saisie 15, sera enregistrée '15'. Cela a des répercussions sur les opérations qu'il est possible de faire et leur résultat :
%% Cell type:code id: tags:
``` python
prix = '20'
quantite = 3
print(prix * quantite) # Affiche 202020
prix = 20
print(prix * quantite) # Affiche 60
```
%% Cell type:markdown id: tags:
Quelle est l'opération effectuée par `*` pour les chaînes de caractères ? Pour les nombres ?
Il est possible de transformer une chaîne en nombres et vice-versa:
%% Cell type:code id: tags:
``` python
prix = '50'
prix_converti = int(prix)
print(prix * quantite) # Affiche 505050
print(prix_converti * quantite) # Affiche 150
prix_reconverti = str(prix_converti)
print(prix_reconverti * quantite) # Affiche 505050
```
%% Cell type:markdown id: tags:
C'est également possible avec les nombres à virgule :
%% Cell type:code id: tags:
``` python
prix = '15.5'
prix_converti = float(prix)
print(prix_converti * quantite) # Affiche 46.5
```
%% Cell type:markdown id: tags:
## Exercice : programme à corriger <a name="ex_corriger"/>
*Source : http://www.france-ioi.org/algo/task.php?idChapter=843&iOrder=4*
Corrigez le programme ci-dessous, de manière à le rendre fonctionnel :
%% Cell type:code id: tags:
``` python
âgeCadet = int(input)
âgeAîné = input()
différence = âgeAîné - âgeDuCadet
print(différence)
```
%% Cell type:markdown id: tags:
## Exercice : singulier d'un nom <a name="ex_singulier"></a>
Reprenez l'exercice vu en début de cours, qui demande un nom commun masculin singulier et affiche son pluriel. Transformez le programme pour qu'il demande un nom masculin pluriel qui se termine par 's' et qui affiche le singulier, comme suit :
```
Entrez un nom commun masculin pluriel :
chiens
Les formes fléchies de "chien" sont:
un chien
des chiens
```
%% Cell type:code id: tags:
``` python
# Exercice : singulier d'un nom
# Modifier le code suivant :
nom = input("Entrez un nom commun masculin singulier : ")
pluriel = nom + "s"
print("Les formes fléchies de '" + nom + "' sont : ")
print("un " + nom)
print("des " + pluriel)
```
%% Cell type:markdown id: tags:
## Exercice : nombre au carré <a name="ex_carré"></a>
Ecrire un programme qui demande à l'utilisateur d'entrer un nombre et qui affiche le nombre au carré :
```
Entrez un nombre :
3
3 au carré vaut 9
```
%% Cell type:code id: tags:
``` python
# Exercice : nombre au carré
```
%% Cell type:markdown id: tags:
## Exercice : conjugaison au présent de l'indicatif <a name="ex_present"></a>
Écrivez un programme qui demande à l'utilisateur l'infinitif d'un verbe simple du premier groupe, comme par exemple "chanter", puis affiche la conjugaison du verbe au présent de l'indicatif, de la manière suivante :
```
Entrez l'infinitif d'un verbe du premier groupe :
chanter
La conjugaison de "chanter" au present de l'indicatif :
je chante
tu chantes
il/elle/on chante
nous chantons
vous chantez
ils/elles chantent
```
%% Cell type:code id: tags:
``` python
# Exercice : conjugaison au présent de l'indicatif
verbe = input("Entrez l'infinitif d'un verbe du premier groupe : ")
#Compléter ci-dessous
print('La conjugaison de "'+verbe+'" au présent de l\'indicatif :')
#Compléter ci-dessous
```
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment