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