Vous êtes sur la page 1sur 9

Fiche 1 Initiation à Python NSI

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

sebjaumaths.free.fr 1/3 Lycée Jean Rostand


Fiche 1 Initiation à Python NSI

Listing 3  Le division euclidienne


a = int ( input ( " E n t r e r un e n t i e r a : " ) )
b= int ( input ( " E n t r e r un e n t i e r b : " ) )
q = a //b
r = a% b
print ( str ( a ) + " = " + str ( b ) + " x " + str ( q ) + " + " + str ( r ) )

Exercice 3 :

1. Aecter aux variables a et b les valeurs respectives 123 et 456.


En utilisant une variable temporaire ( appelée temp ), inverser les aectations ( a prendra
la valeur de b et inversement ).
Correction
Listing 4  Echange
a = 123
b = 456
temp = a
a = b
b = temp

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 : " )

print ( " bonjour , v o t r e nom e s t " + nom + \


" , e t v o t r e prenom e s t " + 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 :

sebjaumaths.free.fr 2/3 Lycée Jean Rostand


Fiche 1 Initiation à Python NSI

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 :

sebjaumaths.free.fr 3/3 Lycée Jean Rostand


Fiche 1 Initiation à Python NSI

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

sebjaumaths.free.fr 4/3 Lycée Jean Rostand


Fiche 1 Initiation à Python NSI

for i in range ( a , b+1 ) :


s = s + i
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 _ 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

sebjaumaths.free.fr 5/3 Lycée Jean Rostand


Fiche 1 Initiation à Python NSI

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 ( )

sebjaumaths.free.fr 6/3 Lycée Jean Rostand


Fiche 1 Initiation à Python NSI

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 :

1. Écrire la fonction carre qui prend en argument un entier n et renvoie la valeur de n2 .

2. Écrire la fonction est_rectangle qui prend en argument un triplet (a, b, c) d'entiers


naturel, et renvoie le booléen vrai si ce sont les longueurs d'un triangle rectangle, faux
sinon.

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

sebjaumaths.free.fr 7/3 Lycée Jean Rostand


Fiche 1 Initiation à Python NSI

from random import r a n d i n t

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.

3. Écrire la fonction position, qui prend en argument un cercle et un point du plan, et


renvoie -1 si le point est à l'intérieur du disque, 0 s'il est sur le cercle, et 1 s'il est à
l'extérieur du disque.

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 ]

sebjaumaths.free.fr 8/3 Lycée Jean Rostand


Fiche 1 Initiation à Python NSI

def rayon ( c ) :
return c [ 1 ]

def d i s t a n c e ( point_A , point_B ) :


return s q r t ( ( point_B [0] − point_A [ 0 ] ) * * 2 + \
( point_B [1] − point_A [ 1 ] ) * * 2 )

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

def i n t e r s e c t i o n ( c_1 , c_2 ) :


cent_1 = c e n t r e ( c_1 ) # le centre du premier cercle
ray_1 = rayon ( c_1 ) # le rayon du premier cercle
cent_2 = c e n t r e ( c_2 ) # le centre du premier cercle
ray_2 = rayon ( c_2 ) # le rayon du premier cercle
d i s t = d i s t a n c e ( cent_1 , cent_2 ) # distance entre l e s deux centres
i f d i s t <= ray_1 + ray_2 :
return True
else :
return F a l s e
# return d i s t <= ray_1 + ray_2

sebjaumaths.free.fr 9/3 Lycée Jean Rostand

Vous aimerez peut-être aussi