Partie 1. : Exercice sur les fonctions et révisions listes et chaînes de

publicité
Partie1. :Exercicesurlesfonctionsetrévisionslistesetchaînesde
caractères
1) (obligatoire)Premièresfonctions
a. Premièrefonction
Ecrirelecoded’unefonctioncarre(n) quiprendenargumentunnombrenetquirenvoie le
carrédecenombre.
#carre(x) retourne le nombre x au carre
#nombre->nombre
#nombre: float ou int
def carre(x):
return x*x
Utiliserensuitecettefonctiondanslafonction mainpourafficherlecarréde4,puisstocker
dansunevariableres lerésultatducarréde11etafficherlecontenuderes.
def main() :
print "Exercice 1"
print carre(4)
res=carre(11)
print res
b. Fonctionappelantuneautrefonction.
Ecrireunfonctioncube(n) appelantlafonctioncarréetretournantlecubedunombren.
Testezladanslemain
#cube(x) retourne le nombre x au cube
#nombre->nombre
def cube(x):
return carre(x)*x
c. Afficher≠Retourner
Ecrireunefonctioncarre_affiche(n)quiaffichelecarrédunombrenmaisneleretourne
pas.Est-ilpossibled’utilisercettefonctiondanslafonctioncubeàlaplacedelafonction
carrepourcalculerlecubeden ?
#carre(x) retourne le nombre x au carre
#nombre->
#Ne peut etre utilisé dans cube car ne retourne rien
def carre_affiche(x):
print x*x
2) (obligatoire)Portéedesvariablesnumériques
Ecrireetexécuterlecodesuivant.Qu'enconcluez-vous?
# -*- coding: utf-8 *-*
def
fonction(x):
x=2*x
print "x dans la fonction :", x
def main() :
fonction(5)
x=5
fonction(x)
print "x dans le programme principal :", x
if __name__ == '__main__':
main()
Leprogrammeaffiche5carlexdelafonctionn'estpaslexdumain
3) (obligatoire)Portéedesvariablesdetypelist
Soitlecodepythonsuivant:
# -*- coding: utf-8 *-*
def
abs_liste(L):
for i in range(len(L)):
L[i]=abs(L[i])
return L
def main() :
maL=[-1,2,-9.5]
L2=abs_liste(L)
print L2
print maL
Qu’affiche-t-il?PourquoilalisteLest-elleaussimodifiée?Commentfairepourqu’ellenelesoit
pas?Corrigezlecodepourquecesoitlecas.
LalisteLetlalisteL2représentelamêmeliste.
LalisteLestmodifiéedanslafonction.
Pourqu'ellenesoitpasmodifiée,ilfautencréerunenouvellelisteetretournercelle-ci
#abs_liste(L): Retourne une liste des valeurs absolues de L
#[Nombre]->[Nombre>=0]
def
abs_liste(L):
Lnew=[]
for i in range(len(L)):
Lnew.append(abs(L[i]))
return Lnew
4) (entrainement)Portéedesvariablesdetypelist
a.
Ecrirelecodepythond'unprogrammequidemandeàl'utilisateurunnombreentiern
etquiaffichelalistedesvaleursde21à2n.Cesvaleursserontstockéesdansuneliste,quisera
remplie par une fonction liste_puissance(n). La liste sera initialisée dans la fonction.
Exempled’executionduscriptdansleterminal:
[bash]pythonTP2.py
Donnezunevaleurentière:5
Lespuissancesde2sont:[2,4,8,16,32]
#listePuissanceDe2(n): Retourne la liste de puisse de 2 de 1 à n
#int>0->[int>0]
def listePuissanceDe2(n):
l=[]
k=1
for i in range(1,n+1):
l.append(k)
k*=2
return l
b.
Si l’initialisation de la liste est déplacée dans le programme principal (main), faut-il
passerlalisteenargumentdelafonction?Peut-onsupprimerlereturndanslafonction?
Ilfautpasserlalisteenargumentetonpeutsupprimerlereturn.Onpeutalorspasserplusieursfoislamêmelisteàla
fonctionetcumulerdesrésultatsdanscelle-ci.
5) (entrainement)Fonctionretournantunechainedecaractères
Ecrireunefonctionsubstituer(s, c1, c2)quiremplacedanslachainedecaractèresstoutes
les occurrences du caractère s1 par le caractère s2 (sans utiliser de fonction python). Par
exemple:
>>> substituer("ATGGGTCGT", "T", "U")
'AUGGGUCGU'
#substituer(s, c1, c2): retourne la chaine de caractères ou tous les caractères
c1 sont remplacés par le caractère c2
#string*caracter*caracter->string
def substituer(s, c1, c2):
s2=""
for c in s:
if c==c1:
s2=s2+c2
else:
s2=s2+c
return s2
6) (approfondissement)Indicesdansunechainedecaractères
1)
Ecrireunefonctionmorceau(s, d, n) quipermetd'extrairencaractèresàpartirdela
positionddela chaînedecaractèress (sansutiliserdefonctionpython).
Parexemple:
>>>S="ADQLTGGRIAGFLGAFSLFDGDT"
>>>morceau(S,5,2)
'GG'
>>>morceau(S,45,2)
''
#morceau(s, d, n):: retourne la chaine de caractères s mais ou la sous chaine
commencant en d et de longeur n a été supprimée
#string*int*int->string
def morceau(s, d, n):
return s[0:d]+s[d+n:]
2)
Ecrireunprogrammequidemandeunechaînedecaractèresàl’utilisateuretappellela
fonction morceau à plusieurs reprises pour raccourcir cette chaîne en enlevant
alternativementsonpremieretsonderniercaractère.VouspouvezutiliserlafonctionlenPar
exemple:
[bash]pythonTP2_Subs.py
Entrezuntexte:SOURIS
SOURISOURISOURIURIURR
#Fonction principale, appelant les autres fonctions
def main() :
print "Exercice 1"
print carre(4)
res=carre(11)
print res
print cube(4)
print "Exercice 3"
L=[-1,2,-9.5]
L2=abs_liste(L)
print L2
print L
print "Exercice 4"
#x=input("Donnez une valeur entière")
x=5
print "Les puissance de 2 sont ", listePuissanceDe2(x)
print "EXERCICE 5"
print substituer("ATGGGTCGT", "T", "U")
print "EXERCICE 6"
s="SOURIS"
print s, " ",
while (len(s)>0):
s=morceau(s,0,1)
print s," ",
#if len(s)>0:
s=morceau(s,len(s)-1, 1)
print s," ",
#Appel de la fonction main
if __name__ == '__main__':
main()
Téléchargement