Programmer en Python en 2nde

Variables, opérateurs, affichage, saisie : affichage et saisie

Crédits

Toute la structure html/css/js et une grande partie du contenu ont été réalisés par Nicolas Buyle-Bodin professeur au lycée Lacassagne, avec l'aide de Jean-Manuel Mény, professeur au lycée de la plaine de l'Ain. Ils ont travaillé pendant plusieurs centaines d'heures pour créer un site de formation à destination des enseignants du secondaire de l'académie de Lyon d'une grande qualité visible sur le portail Mathématiques du site académique. Ils ont eu la gentillesse de placer leur code source sous licence Creative Commons BY-NC-SA Respect de la Paternité - Pas d'utilisation commerciale - Partage des conditions initiales à l'identique..

Nous les en remercions chaleureusement.

Affichage avec print

  • On utilise la fonction print pour un affichage sur la sortie standard qui par défaut est l'écran.
  • Pour afficher du texte, celui-ci doit être contenu dans une chaîne de caratère délimitée par des apostrophes comme 'La mer' ou des guillemets comme "L'océan".
  • On peut aussi afficher la valeur d'une expression obtenue par évaluation d'une combinaison de littéraux (valeurs correspondant aux types de base du langage), d'opérateurs et de variables.
  • 
    			In [88]: print(Bonjour)
    			---------------------------------------------------------------------------
    			NameError                                 Traceback (most recent call last)
    			 in ()
    			----> 1 print(Bonjour)
    			
    			NameError: name 'Bonjour' is not defined
    			
    			In [89]: print("Bonjour")
    			Bonjour
    			
    			In [90]: a = 2018
    			
    			In [91]: print(a - 2001)
    			17
    			
  • On peut passer plusieurs arguments à la fonction print en les séparant par une virgule, print les affichera par concaténation en utilisant un espace vide par défaut comme séparateur.
  • Par défaut, print effectue un saut de ligne après chaque affichage mais on peut changer ce comportement par défaut en réglant le paramètre optionnel end=''.
  • On peut aussi changer le paramètre de séparation par défaut sep=''.
  • Pour afficher l'aide sur une fonction en python, on peut utiliser la documentation en ligne sur https://docs.python.org/3/ ou la documentation intégrée avec la fonction help.
  • 
    		In [94]: a = 2018
    		
    		In [95]: print('Vous avez ', a - 2001, ' ans')
    		Vous avez  17  ans
    		
    		In [96]: print('Ligne 1'); print('Ligne 2')
    		Ligne 1
    		Ligne 2
    		
    		In [97]: print("Bonjour", "à tous", sep="\^^/")
    		Bonjour\^^/à tous
    
    		In [98]: print('Ligne 1', end='(:>)'); print('Ligne 2')
    		Ligne 1(:>)Ligne 2
    		
    		In [99]: help(print)
    		Help on built-in function print in module builtins:
    		
    		print(...)
    		 print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    		 
    		 Prints the values to a stream, or to sys.stdout by default.
    		 Optional keyword arguments:
    		 file:  a file-like object (stream); defaults to the current sys.stdout.
    		 sep:   string inserted between values, default a space.
    		 end:   string appended after the last value, default a newline.
    		 flush: whether to forcibly flush the stream.
    		

Saisie avec input


		In [103]: password = input('Entrez le mot de passe : ')
		Entrez le mot de passe : Sesame
		
		In [104]: password
		Out[104]: 'Sesame'
		
		In [1056]: age  = input('Entrez votre age : ')
		Entrez votre age : 16
		
		In [106]: age
		Out[106]: '16'
		
		In [107]: type(age)
		Out[107]: str
		

Attention au type à l'entrée

  1. Dans Pyzo, créer un nouvel onglet de l'éditeur de programme Python et l'enregistrer sur le disque dans le dossier Python2nde précédemment créé, sous le nom de fichier print_input.py. On peut inclure la date du jour dans le nom de fichier, c'est pratique pour l'indexation.
  2. Créer une cellule Exo1 , saisir le code suivant puis l'exécuter. Comment peut-on expliquer l'affichage obtenu ?
  3. 
    date = input('Entrez votre date de naissance : ')
    print('Vous avez  ', 2018 - date, 'ans')
    		
  4. Modifier le code précédent pour que le programme soit correct.

		
		
  • Corrigé question 2
  • Corrigé question 3

Python affiche un message d'erreur lorsqu'on exécute le programme car la valeur récupérée avec input dans date est de type str et la seconde instruction va don effectuer une opération entre deux valeurs de types incompatibles str et int .

Entrez votre date de naissance : 2001
Traceback (most recent call last):
  File "/home/fjunier/premier_programme.py", line 2, in 
    print('Vous avez  ', 2017 - date, 'ans')
TypeError: unsupported operand type(s) for -: 'int' and 'str'
 

Si on souhaite utiliser la valeur saisie avec input comme un entier, il faut la convertir avec int.


date = int(input('Entrez votre date de naissance : '))
print('Vous avez  ', 2017 - date, 'ans')
		

Le résultat affiché est correct:

Entrez votre date de naissance : 2001
Vous avez   16 ans

Conversion de type

Conversion de type
int Constructeur du type entier
float Constructeur du type flottant
str Constructeur du type chaîne de caractères
bool Constructeur du type chaîne de booléen

In [112]: a = 5

In [113]: type(a)
Out[113]: int

In [114]: b = float(a)

In [115]: type(b)
Out[115]: float

In [116]: type(a + b)
Out[116]: float

In [117]: c = str(a)

In [118]: type(c)
Out[118]: str

In [119]: c
Out[119]: '5'

In [120]: d = 3.14

In [121]: type(d)
Out[121]: float

In [123]: d = str(d)

In [124]: type(d)
Out[124]: str

In [125]: d
Out[125]: '3.14'

In [126]: d = float(d)

In [127]: d
Out[127]: 3.14

In [128]: type(d)
Out[128]: float

In [129]: str(' 3.14')
Out[129]: ' 3.14'

In [130]: float(' 3.14')
Out[130]: 3.14

In [131]: float('3 . 14')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
 in ()
----> 1 float('3 . 14')

ValueError: could not convert string to float: '3 . 14'

In [132]: bool(5)
Out[132]: True

In [133]: bool(0)
Out[133]: False

In [134]: bool('Bonjour')
Out[134]: True

In [135]: bool('')
Out[135]: False

In [136]: 1 + True
Out[136]: 2

In [137]: 1 + False
Out[137]: 1
		

Crédits

Toute la structure html/css/js et une partie du contenu ont été réalisés par Nicolas Buyle-Bodin professeur au lycée Lacassagne, avec l'aide de Jean-Manuel Mény, professeur au lycée de la plaine de l'Ain. Ils ont travaillé pendant plusieurs centaines d'heures pour produire des documents de formation à destination des enseignants du secondaire d'une grande qualité, et ils ont eu la gentillesse de placer leur code source sous licence Creative Commons BY-NC-SA Respect de la Paternité - Pas d'utilisation commerciale - Partage des conditions initiales à l'identique..

Nous les en remercions chaleureusement.