Académique Documents
Professionnel Documents
Culture Documents
Fiche 1
Initiation à Python
Correction
1 Les variables
Exercice 1 :
1. Écrire un programme qui demande des coordonnées ( abscisses puis ordonnées ) de deux
point A et B , puis retourne les coordonnées du milieu du segment [AB].
Correction
Listing 1 Le milieu
x_a = int ( input ( " E n t r e r l ' a b s c i s s e de A : " ))
y_a = int ( input ( " E n t r e r l ' ordonnee de A : " ))
x_b = int ( input ( " E n t r e r l ' a b s c i s s e de B : " ))
y_b = int ( input ( " E n t r e r l ' ordonnee de B : " ))
x_i = ( x_a + x_b) / 2
y_i = ( y_a + y_b) / 2
print ( " l e s c o o r d o n n e e s du m i l i e u s o n t : ( " + str ( x_i ) + \
" , " + str ( y_i ) " ) " )
2. Écrire un programme qui demande des coordonnées ( abscisses puis ordonnées ) de deux
point A et B , puis retourne les coordonnées du symétrique de A par rapport à B .
Correction
Listing 2 Le symétrique
x_a = int ( input ( " Entrer l ' a b s c i s s e de A : " ))
y_a = int ( input ( " Entrer l ' ordonnee de A : " ))
x_b = int ( input ( " Entrer l ' a b s c i s s e de B : " ))
y_b = int ( input ( " Entrer l ' ordonnee de B : " ))
x_a_2 = 2*x_b−x_a
y_a_2 = 2*y_b−y_a
print ( " l e s c o o r d o n n e e s du s y m e t r i q u e s o n t : ( " + str (x_a_2) + \
" , " + str (y_a_2) " ) " )
Exercice 2 :
Écrire un programme qui demande à l'utilisateur d'entrer deux entiers, et ache le résultat de
la division euclidienne :
Exemple : Si l'utilisateur entre 25 puis 3, l'algorithme ache :
25 = 3 x 8 + 1
Correction
Exercice 3 :
2. En considérant que a et b sont des entiers, inverser les valeurs sans utiliser une variable
temporaire.
Correction
Listing 5 Echange
a = 123
b = 456
a = a+b
b = a−b
a = a−b
Exercice 4 : Écrire une procédure qui demande à l'utilisateur d'entrer son nom puis son pré-
nom, et ache une phrase d'accueil :
bonjour , v o t r e nom e s t . . . , e t v o t r e prenom e s t . . .
Correction
Listing 6 Nom et prenom
nom = input ( " e n t r e r v o t r e nom : " )
prenom = input ( " e n t r e r v o t r e prenom : " )
2 Les conditionnelles
Exercice 5 :
Sans utiliser l'ordinateur, donner la valeur de la variable a à la n de la procédure dans
chacun des cas suivants :
1. >>> a = 8
>>> x = 3
>>> y = " bonjour "
>>> i f ( x>3) or ( y <= " t o u t " ) :
a = 14
else :
a = 2
2. >>> a = 8
>>> x = 2.5
>>> y = 5
>>> i f ( x>3) :
i f ( y == 5 ) :
a = 7
else :
a = 15
else :
i f ( y % 5 == 1 ) :
a = 48
3. >>> a =
8
>>> x =
3
>>> y =
5
>>> z =
10
>>> i f ( x > −1) and ( y <= 0 ) or ( z == 10 ) :
a = a+4
>>> i f ( x == −1) and ( ( y <= 0 ) or ( z == 10 ) ) :
a = a+2
>>> i f ( x == −1) or ( y <= 0 ) and ( z == 10 ) :
a = a+7
>>> i f ( x == 3 ) or ( y <= 0 ) and ( z < 5 ) :
a = a+1
Exercice 6 : Écrire une procédure demande à l'utilisateur son nom et son age, et ache
indiquant si le nom est inférieur au prénom ( dans l'ordre alphabétique), et si l'utilisateur est
adulte.
Correction
def s i g n e ( n ) :
if n > 0 :
return 1
e l i f n< 0 :
return −1
else :
return 0
def signe_2 ( n ) :
if n > 0 :
return 1
else :
i f n< 0 :
return −1
else :
return 0
3 Les boucles
Exercice 7 :
1. Écrire une procédure qui ache la table de multiplication d'un entier entré par l'utilisa-
teur.
2. Écrire une procédure qui décompte, en partant de 10, et nie par "Partez !".
Correction
def decompte_while ( ) :
n=10
while n >=0 :
print ( n )
n=n−1
print ( " p a r t e z " )
def decompte_for ( ) :
for i in range ( 1 1 ) :
print (10 − i )
print ( " p a r t e z " )
Exercice 8 :
1. Écrire une procédure qui calcule la somme des entiers consécutifs entre deux entiers entrés
par l'utilisateur.
2. Écrire une procédure qui calcule le produit des entiers consécutifs entre deux entiers entrés
par l'utilisateur.
Correction
def somme_entre_deux_entiers_while ( ) :
a = int ( input ( " e n t r e r un p r e m i e r nombre : " ) )
b = int ( input ( " e n t r e r un deuxieme nombre : " ) )
s = 0 # s est la somme cherchee
while a <= b :
s = s + a # s += a
a = a +1 # a +=1
return s
def somme_entre_deux_entiers_for ( ) :
a = int ( input ( " e n t r e r un p r e m i e r nombre : " ) )
b = int ( input ( " e n t r e r un deuxieme nombre : " ) )
s = 0
def p r o d u i t _ e n t r e _ d e u x _ e n t i e r s _ w h i l e ( ) :
a = int ( input ( " e n t r e r un p r e m i e r nombre : " ) )
b = int ( input ( " e n t r e r un deuxieme nombre : " ) )
s = 1 # s est la somme cherchee
while a <= b :
s = s * a # s *= a
a = a +1 # a +=1
return s
def p r o d u i t _ e n t r e _ d e u x _ e n t i e r s _ f o r ( ) :
a = int ( input ( " e n t r e r un p r e m i e r nombre : " ) )
b = int ( input ( " e n t r e r un deuxieme nombre : " ) )
s = 1
for i in range ( a , b+1 ) :
s = s * i
return s
Exercice 9 : On utilisera une fonction qui renvoie aléatoirement un entier entre deux entiers
donnés :
>>> from random import r a n d i n t
>>> r a n d i n t ( 8 , 1 2 )
8
1. Écrire une procédure qui simule le lancer de trois dés de 6, et renvoie le score obtenu.
2. Écrire une procédure qui compte le nombre d'essais pour obtenir trois 6.
3. Écrire une procédure qui compte le nombre d'essais pour obtenir la combinaison "421".
Correction
from random import r a n d i n t
def t r o i s _ d e ( ) :
de_1 = r a n d i n t ( 1 , 6 )
de_2 = r a n d i n t ( 1 , 6 )
de_3 = r a n d i n t ( 1 , 6 )
return ( de_1 + de_2 + de_3 , de_1 * de_2 * de_3 )
def n b _ e ss a i ( ) :
nb = 0
tirage = 0
while not ( t i r a g e == 1 8 ) :
nb +=1
t i r a g e = trois_de ()
return nb
def nb_essai_421 ( ) :
nb = 0
tirage_somme = 0
tirage_produit = 0
while not ( t i r a g e _ p r o d u i t == 8 and tirage_somme ==7 ) :
de_1 = r a n d i n t ( 1 , 6 )
de_2 = r a n d i n t ( 1 , 6 )
de_3 = r a n d i n t ( 1 , 6 )
print ( str ( de_1 ) +" , " + str ( de_2 ) + " , " + str ( de_3 ) )
nb +=1
tirage_somme = de_1 + de_2 + de_3
t i r a g e _ p r o d u i t = de_1 * de_2 * de_3
return nb
def nb_essai_421_bis ( ) :
nb = 0
tirage_somme = 0
tirage_produit = 0
while not ( t i r a g e _ p r o d u i t == 8 and tirage_somme ==7 ) :
nb +=1
( s , p ) =t r o i s _ d e ( )
tirage_somme = s
tirage_produit = p
return nb
4 Les fonctions
Exercice 10 : Écrire une fonction signe qui renvoie 1 si la donnée est positif, 0 si elle est
nulle et -1 si elle est négative.
Correction
def s i g n e ( x ) :
if x > 0 :
return 1
e l i f x == 0 :
return 0
else :
return −1
Exercice 11 :
Correction
def c a r r e ( n ) :
return n**2
def e s t _ r e c t a n g l e ( a , b , c ) :
i f c a r r e ( b ) == c a r r e ( c ) + c a r r e ( a ) :
return True
e l i f c a r r e ( c ) == c a r r e ( b ) + c a r r e ( a ) :
return True
e l i f c a r r e ( a ) == c a r r e ( b ) + c a r r e ( c ) :
return True
else :
return F a l s e
def e s t _ r e c t a n g l e _ 2 ( a , b , c ) :
return c a r r e ( b ) == c a r r e ( c ) + c a r r e ( a ) \
or c a r r e ( c ) == c a r r e ( b ) + c a r r e ( a ) \
or c a r r e ( a ) == c a r r e ( b ) + c a r r e ( c )
Exercice 12 : Écrire la fonction jeu associé au jeu du nombre mystère : l'algorithme détermi-
ner aléatoirement une nombre entre 0 et 100, et l'utilisateur doit le retrouver. A chaque essai,
un compteur est incrémenté, et un message indique si il est trop bas ou trop haut.
La fonction ne prend pas d'argument et renvoie le nombre d'essais.
Correction
def j e u ( ) :
nb_mystere = r a n d i n t ( 0 , 1 0 0 )
compteur = 1
n b _ u t i l i s t e u r = int ( input ( " e n t r e r un nb : " ) )
while n b _ u t i l i s t e u r != nb_mystere :
compteur +=1
i f n b _ u t i l i s t e u r > nb_mystere :
print ( " t r o p haut " )
else :
print ( " t r o p bas " )
n b _ u t i l i s t e u r = int ( input ( " e n t r e r un nb : " ) )
print ( " g a g n e r " )
return compteur
Exercice 13 : On utilisera les fonctions mathématiques en faisant appel à la bibliothèque
math :
from math import *
On dénira un point du plan par un couple (x, y), exemple :
point_A = ( 5 , 9 )
On dénira un cercle du plan par un tuple ((x, y), r), où le point (x, y) est le centre, et r le
rayon, exemple :
c_1 =( point_A , 4 )
1. Écrire la fonction centre , qui prend en argument un cercle, et renvoie le centre du cercle.
2. Écrire la fonction rayon, qui prend en argument un cercle, et renvoie le rayon du cercle.
4. Écrire la fonction intersection, qui prend en argument deux cercles et renvoie True si
les deux disques ont des points communs, et False sinon.
Correction
from math import *
point_A = ( 5 , 9 )
point_B = ( − 3 ,4)
c_A = ( point_A , 4 )
c_2 = ( ( 8 , 4 ) , 2 )
def c e n t r e ( c ) :
return c [ 0 ]
def rayon ( c ) :
return c [ 1 ]
def p o s i t i o n ( c , point_m ) :
cent = centre ( c ) # le centre du cercle
ray = rayon ( c ) # le rayon du cercle
# distance entre centre et m
d i s t = d i s t a n c e ( cent , point_m )
i f d i s t < ray :
return −1
e l i f d i s t == ray :
return 0
else :
return 1