Entrée non textuelle
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Objectifs
Savoir récupérer des informations non textuelles ;
Savoir convertir du texte.
Mise en situation
Les données attendues lors d'une lecture de l'entrée standard ne sont pas toujours des chaînes de caractères. Il faut alors convertir l'information en nombre, booléen, date, etc.
L'entrée standard permet de récupérer les phrases écrites par l'utilisateur, c'est-à-dire des chaînes de caractères. Pourtant, si l'on veut obtenir son âge et que celui-ci est récupéré dans une chaîne de caractères, les opérations sur celui-ci, comme des additions, des comparaisons, etc., ne donneront pas le résultat escompté.
Il est donc nécessaire de convertir le résultat d'une lecture dans ce cas.
Définition : Conversion
Convertir un élément permet de changer son type, comme transformer un chiffre en chaîne de caractères, ou inversement une chaîne en chiffre.
Rappel : Types
Le type d'un élément est en quelque sorte sa nature :
un nombre (entier, décimal, etc.),
une string (chaîne de caractères),
un booléen (vrai ou faux),
une date,
etc.
Syntaxe : Convertir une valeur
En JavaScript, on peut convertir un élément grâce aux fonctions
String()
,Boolean()
,Number()
,Date()
, etc.En Python, on dispose des fonctions
int()
,float()
,str()
, etc.
Exemple :
"""Python."""
number = '42'
print(type(number)) # affiche le type 'str'
number = int(number) # transforme la chaîne en entier
print(type(number)) # affiche le type 'int'
/** JavaScript */
let number = '42'
console.log(typeof number) // affiche 'string'
number = Number(number) // transforme la chaîne en nombre
console.log(typeof number) // affiche 'number'
Attention : Not a Number
Il faut toujours partir du principe qu'une entrée d'un utilisateur peut être erronée et ne pas correspondre à ce qui est attendu, comme lire une lettre alors que l'on demande un chiffre.
Il faut donc vérifier les entrées lorsqu'une conversion en nombre suit.
1ère approche : on convertit puis on vérifie le résultat.
2ème approche : on teste si la variable est convertible, et on convertit seulement si c'est le cas.
Exemple : Demande d'un entier
En Python, voici comment utiliser l'approche n°2 : on teste d'abord la chaîne avec isnumeric()
qui retourne True
ou False
. Si c'est True
, on peut convertir.
"""Python."""
age = input('Votre âge : ')
if not age.isnumeric():
print('Réponse erronée')
else:
print(age)
En JavaScript, voici comment utiliser l'approche n°2 : on teste si la chaîne représente un nombre avec la fonction isNaN()
. Cette fonction renvoie true
si la valeur testée n'est pas un nombre (Not a Number).
On la convertit ensuite avec la fonction Number()
.
/** JavaScript */
let age = prompt('Votre âge :')
if (!isNaN(age)) {
age = Number(age)
console.log(age)
} else {
console.log('Réponse erronée !')
}
Exemple : Demande d'une date
En Python, la fonction strptime
(string parse time) prend deux arguments : la chaîne à convertir et le format dans lequel elle est écrite.
En JavaScript, la classe Date
peut transformer une chaîne AAAA-MM-JJ, par défaut, en date.
Les manipulations de date sont très sensibles aux formats.
"""Python: convertit la réponse en date."""
import time
birthday = input('Quelle est votre date de naissance? (JJ MM AAAA)\n')
print(time.strptime(birthday, '%d %m %Y')) # format %d %m %Y = JJ MM AAAA
/** JavaScript: convertit la réponse en date */
let birthday = prompt('Quelle est votre date de naissance? (AAAA-MM-JJ)')
console.log(Date(birthday))
À retenir
La conversion permet, lors de la lecture d'une entrée, d'adapter la valeur obtenue à l'usage que l'on veut en faire.
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.