PYTHON 2 INFO FEUILLE n°14 D'EXERCICES MAI 2012
Voir le COURS sur la feuille n°14
THEME:
Programme multitâches. Un programme principal
fait apppel à plusieurs scripts qui renvoient des résultats.
---------------------------------------------------
EXERCICE 1
Que donne le programme suivant?
import decimal
def md(T,N) :
if N%2 ==0 :
# Cela veut dire: Si N est pair
i = int(N/2)-1
# Le -1 est du au fait que la première valeur est d'indice 0
return float(T[i] + T[i + 1])/2
else :
i = int(( N+1)/2)-1
# Ne pas oublier que la première valeur est d'indice 0
return T[i]
# PROGRAMME PRINCIPAL#
###################
T=input("Entrer une liste croissante de valeurs ( entre crochets ): T = ")
N=len(T)
print "Votre liste contient",N,"valeurs"
print "La médiane est",md( T,N)
----------------------------------------------------------------------
Réponse:
Ce script permet d'obtenir la médiane des termes de la liste T
quand ses N termes sont déjà dans l'ordre croissant.
Par exemple
>>>
Entrer une liste croissante de valeurs ( entre crochets ): T = [2,15,19,25,73]
Votre liste contient 5 valeurs
La médiane est 19
Par exemple:
>>>
Entrer une liste croissante de valeurs ( entre crochets ): T = [5,7,17,18]
Votre liste contient 4 valeurs
La médiane est 12.0
>>>
-------------------------------------------------------------------------------------
EXERCICE 2
Que fait le programme suivant sachant que
T est une liste ou un tableau de N valeurs ( N =len(T) ),
h et k sont deux entiers naturels tels que 0 ≤ h < k < N ?
def indmi(T,h,k):
m=T[h]
# m est le terme d'indice h de la liste T
# m peut être n'importe quel terme de T sauf
# le premier et le dernier terme de T
ind=h
for i in range(h+1 , k ,1) :
# i est un entier entre h+1 accepté et k exclus
if T[i]<m :
# Si le terme d'indice i de T est plus petit que le terme d'indice h de T
m= T[i]
ind = i
return ind
# ATTENTION return est au niveau du for
#PROGRAMME PRINCIPAL#
####################
T=input("Entrer une liste d'au moins trois valeurs ( entre crochets ): T = ")
N=len(T)
print " Votre liste comporte",N," valeurs"
k =input(" Donner un indice k entre 2 et N-1 : k = " )
h=input(" Donner un indice h compris entre 0 et k ( k non compris) : h = ")
print "Quand l'indice est entre h et k ( k exclu ) la valeur mini est d'indice : ", indmi(T,h,k)
----------------------------------------------------------------------------------------
Réponse:
On obtient l'indice de la plus petite valeurs comprise entre
T[h] accepté et T[k] exclu.
Par exemple
>>>
Entrer une liste d'au moins trois valeurs ( entre crochets ): T = [19,14,3,7,70]
Votre liste comporte 5 valeurs
Donner un indice k entre 2 et N-1 : k = 4
Donner un indice h compris entre 0 et k ( k non compris) : h = 2
Quand l'indice est entre h et k exclu la valeur mini est d'indice : 2
C'est parmi 3,7,70 sans 70 le 3 qui est la plus petite valeur
et son indice est 2
----------------------------------------------------------------------------
EXERCICE 3
Que donne le script suivant?
def ech(T,a,b):
# T est une liste
# a et b sont deux indices de termes de la liste T
# Ce script permet de permuter les termes d'indices a et b
temp = T[a]
T[a] = T[b]
T[b]= temp
return T
#Programme principal#
#################
T=input("Entrer une liste de N valeurs avec N au moins 3 ( entre crochets ): T = ")
N=len(T)
a =input(" Donner un indice a ( compris entre 0 et N-1) : a = " )
b=input(" Donner un indice b ( compris entre 0 et N-1 ): b = " )
print "La liste est devenue: T= ",ech(T,a,b)
------------------------------------------------------------------------------
Réponse:
Ce script permet de permuter les termes d'indices a et b de la liste T.
Par exemple:
>>>
Entrer une liste de N valeurs avec N moins 3 ( entre crochets ): T = [1,2,3,4]
Donner un indice a ( compris entre 0 et N-1 ): a = 1
Donner un indice b ( compris entre 0 et N-1 ): b = 2
La liste est devenue: T = [1, 3, 2, 4]
2 et 3 sont permutés c'est-à-dire les termes T[1] et T[2]
-----------------------------------------------------------------------------------------
EXERCICE 4
Exercice de synthèse.
Que fait le programme suivant?
import decimal
def Tri_Bulle(T,N):
for i in xrange(N):
# i varie entre 0 et N-1
for j in reversed(xrange(i,N)):
# j varie entre N-1 et i en décroissant
if T[j]<T[j-1]:
t=T[j]
T[j]=T[j-1]
T[j-1]=t
return T
# ATTENTION return est au niveau du premier for
def md(T,N) :
if N%2 ==0 :
# Cela veut dire: Si N est pair
i = int(N/2)-1
# Le -1 est du au fait que la première valeur est d'indice 0
return float(T[i] + T[i + 1])/2
else :
i = int(( N+1)/2)-1
# Ne pas oublier que la première valeur est d'indice 0
return T[i]
# PROGRAMME PRINCIPAL#
###################
T=input("Entrer une liste d'au moins trois valeurs ( entre crochets ): T = ")
N=len(T)
print "Votre liste contient",N,"valeurs"
print "La liste ordonnée est : T = ", Tri_Bulle(T,N)
print " Sa médiane est : MED = ",md(T,N)
-------------------------------------------------------------------
Réponse:
On obtient la liste ordonnée puis sa médiane
Par exemple :
>>>
Entrer une liste d'au moins trois valeurs ( entre crochets ): T = [1,7,4,8]
Votre liste contient 4 valeurs
La liste ordonnée est : T = [1, 4, 7, 8]
Sa médiane est : MED = 5.5
Par exemple:
>>>
Entrer une liste d'au moins trois valeurs ( entre crochets ): T = [1,7,4,8,10]
Votre liste contient 5 valeurs
La liste ordonnée est : T = [1, 4, 7, 8, 10]
Sa médiane est : MED = 7
-------------------------------------------------------------------------