3.9. Entrées et sorties

3.9.1. Affichage de données (print())

La fonction print() permet d’afficher du texte. L’utilisation la plus simple que l’on puisse en faire est de passer en argument [1] la variable à afficher : print(variable).

>>> print('a variable')
a variable
>>> print(10)
10
>>> var = 'hello'
>>> print(var)
hello

Il est possible de donner plusieurs arguments à la suite :

>>> print(1, 'str', 1+2j)
1 str (1+2j)

On peut modifier le symbole qui les sépare en renseignant l’argument sep (par défaut il s’agit d’un espace) :

>>> print(1, 'str', 1+2j, sep='_')
1_str_(1+2j)

Enfin, il est aussi possible de choisir le symbole en fin de ligne (par défaut c’est un fin de ligne) :

>>> print('first print', end=' '); print('second print')
first print second print

Pour afficher une nouvelle ligne, il suffit d’appeler la fonction sans argument :

>>> print()

>>>

Enfin, on peut spécifier le fichier où est écrit l’argument à l’aide de l’argument file.

Footnotes

[1]L’utilisation et le vocabulaire des fonctions seront détaillés dans le chapitre Fonctions.

3.9.2. Entrée au clavier (input())

La fonction input() permet de lire une ligne écrite et de la stocker dans une variable. La saisie de la ligne est interrompue avec la touche entrée.

Elle accepte un argument optionnel qui permet d’afficher une chaine de caractères (par exemple, pour donner des informations) :

>>> input()
Two words
'Two words'
>>> input()
1
'1'
>>> prompt = input()
Text
>>> prompt
'Text'
>>> name = input('Enter your name: ')
Enter your name: Harold
>>> name
'Harold'

Warning

Le type de la variable créée sera toujours une chaine de caractères. Il faudra donc prendre garde à effectuer les tests et conversions nécessaires avant son utilisation.

3.9.3. Fichiers

3.9.3.1. Ouverture et fermeture

On ouvre un fichier à l’aide de la fonction open() :

open('file', 'mode')

Les deux arguments doivent être des chaines de caractères. Le mode peut être :

  • r : lecture seule ;
  • w : écriture ;
  • a : ajout.

Le fichier est créé s’il n’existe pas avec les options w et a. Avec ces modes, il n’est pas possible de lire ce qui est dans le fichier.

La méthode close() permet de fermer un fichier.

3.9.3.2. Méthodes de fichier

read()

Lit tout le contenu du fichier et le renvoie sous forme d’une chaine de caractères.

readline()

Lit la ligne suivant le curseur dans le fichier et la renvoie sous forme d’une chaine de caractères.

readlines()

Lit tout le contenu du fichier et retourne les lignes sous forme d’une liste de chaines de caractères,.

write('string')

Écrit la chaine string dans le fichier.

writelines(sequence)

Écrit la séquence sequence dans le fichier, en mettant bout à bout les éléments.

Rien ne sera écrit dans le fichier avant l’appel de la méthode close`().

3.9.3.3. Exemple

>>> names = ['Yves', 'Jean', 'Dupont']
>>> file = open('names.txt', 'w')
>>> for name in names:
...      output = file.write(name + '\n')
>>> file.close()

En ouvrant le fichier names.txt, vous pourrez voir un nom sur chaque ligne. On aurait pu utiliser la méthode writelines() plutôt que de passer par une boucle.

>>> file = open('names.txt', 'r')
>>> for line in file.readlines():
...     print(line)
Yves

Jean

Dupont

Warning

Il peut être nécessaire de supprimer les signes de nouvelles \n avant d’afficher les chaines de caractères. De même, il peut être nécessaire de les ajouter si l’on désire écrire plusieurs chaines sur des lignes différentes.

Une utilisation plus générale des fichiers et des dossiers sera abordée dans le chapitre Gestion des fichiers et dossiers.

3.9.4. Exercices

  1. Écrivez un programme qui demande son nom à l’utilisateur, et qui l’affiche ensuite à l’écran avec un message d’accueil.
  2. Écrire un programme qui demande deux nombres à l’utilisateur, et qui affiche ensuite la somme, la différence et la multiplication de ces deux nombres.
  3. Améliorez le programme précédent en ajoutant la division. Faites attention à prendre en compte le cas où le deuxième nombre est nul.
  4. Écrire un programme qui récupère une liste de noms dans un fichier (un nom par ligne) et qui les trie par ordre alphabétique.