👓 Lecture de l'entrée⚓︎
Rappel
Sur la première page Hello World!
, on a évoqué que les programmes informatiques envoient des résultats à d'autres qui font de nouvelles taches avec. Une technique possible est d'écrire les résultats dans un fichier et le programme suivant lit ses paramètres dans le fichier.
Exemple
Un premier programme pourrait avoir 0 1 10
en paramètres à lire.
- Il lit ses trois paramètres
- Il affiche le premier, puis le deuxième, et dix fois de suite affiche la somme des deux nombres affichés. Donc 12 nombres affichés.
0 1 1 2 3 5 8 13 21 34 55 89
Un autre programme pourrait utiliser cette sortie comme son entrée à lui. Son rôle serait de fabriquer un tableau HTML dont le rendu serait :
\(n=0\) | \(n=1\) | \(n=2\) | \(n=3\) | \(n=4\) | \(n=5\) | \(n=6\) | \(n=7\) | \(n=8\) | \(n=9\) | \(n=10\) | \(n=11\) |
---|---|---|---|---|---|---|---|---|---|---|---|
\(F(0)=0\) | \(F(1)=1\) | \(F(2)=1\) | \(F(3)=2\) | \(F(4)=3\) | \(F(5)=5\) | \(F(6)=8\) | \(F(7)=13\) | \(F(8)=21\) | \(F(9)=34\) | \(F(10)=55\) | \(F(11)=89\) |
Un programme est souvent utilisé avec un système d'entrée-sortie et branché avec un autre.
Data scientist
Parmi les nombreux métiers de l'informatique, il y a les scientifiques qui analysent les données d'expériences. Les appareils de mesure enregistrent des données qui sont transmises à des programmes. Des programmes qui sont écrits ou utilisés par des humains.
La lecture avec Python⚓︎
On peut lire :
- Du texte,
- c'est tout !
Enfin, directement, on ne peut lire que du texte.
première ligne
seconde ligne plus longue
ligne_1 = input()
ligne_2 = input()
print(ligne_2)
print(ligne_1)
seconde ligne plus longue
première ligne
Le programme a seulement lu deux lignes, puis affiché à l'envers ces deux lignes.
première ligne
seconde ligne plus longue
ligne_1 = input()
print(ligne_1)
première ligne
Le programme n'a lu qu'une ligne, puis l'a affichée. C'est possible.
première ligne
ligne_1 = input()
ligne_2 = input()
print(ligne_2)
print(ligne_1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
EOFError
Le programme a pu lire la ligne_1
, mais en essayant de lire ligne_2
le curseur de lecture du fichier était à la fin du fichier. On a un message d'erreur EOFError
qui signifie : End Of File Error, erreur de fin de fichier.
Regardez bien ces 3 exemples
Avez-vous compris le problème de EOFError
? Relisez encore les 3 exemples précédents !!!
Il ne faut pas lire plus de lignes qu'il n'y a de disponibles ! C'est une erreur fréquente.
Lecture de nombres⚓︎
Pour lire un entier, on lit une ligne, on obtient du texte, et on demande à une fonction Python de convertir le texte en entier. Il s'agit de la fonction int
. (pour integer)
Pour lire un nombre à virgule flottante, on lit une ligne, on obtient du texte, et on demande à une fonction Python de convertir le texte en nombre flottant. Il s'agit de la fonction float
. (pour floating point number)
Exemples à étudier
42
ligne = input()
nombre = int(ligne)
print(nombre * 2)
84
ligne
est du texte.nombre
est un entier, converti parint
.- On peut faire des calculs mathématiques avec...
2.718
ligne = input()
nombre = float(ligne)
print(nombre + 3.0)
5.718
ligne
est du texte.nombre
est un flottant, converti parfloat
.- On peut faire des calculs mathématiques avec...
42
nombre = input()
print(nombre * 2)
4242
nombre
est du texte, ce n'est pas un nombre.- On ne peut pas faire des calculs mathématiques avec...
- Mais, ici, Python a collé deux fois le texte, il n'y a pas d'erreur (enfin...).
print("bla" * 3)
aurait donnéblablabla
Regardez bien ces 3 exemples
Avez-vous compris la fabrication de blablabla
? Regardez à nouveau ces trois exemples !!!
Il faut convertir le texte en nombre si on veut faire des calculs.
Il est possible d'écrire les deux étapes en une seule instruction.
nombre = int(input())
...
ligne = input()
nombre = int(ligne)
...
En résumé
- Il faut lire dans le bon ordre les paramètres.
- Il faut les convertir correctement en fonction de l'énoncé.
- Il ne faut pas en lire plus qu'il n'y a de disponibles.
Vous pouvez vous entrainer sur cette page.
Autre erreur possible
Si vous essayez de convertir du texte vide ou bien un texte qui ne donne pas un nombre comme 'coucou'
, alors vous aurez une erreur.
coucou
nombre = int(input())
print(nombre * 2)
ValueError: invalid literal for int() with base 10: 'coucou'
La fonction int
ne peut pas convertir ce texte avec la base \(10\).