##################################################### ##################################################### ############# Exercice 1 ########################## def mystere(n: int) -> int : s = 0 for i in range(n): s = s + 2*i +1 return s ## 1.1) ## Aussi bien le paramètre n que la valeur retournée sont de type int, c'est à dire des nombres entiers. ## 1.2) ## i 0 1 2 ## s 0 1 4 9 ## 1.3) ## mystere (3) retourne 9 ## 1.4) ## mystere (4) retourne 16 ## 1.5) ## La fonction mystere(n) semble calculer le carré de son paramètre n. ## 1.6) ## La complexité de la fonction mystere(n) est O(n) car le nombre d'opérations élémentaires effectuées lors d'un appel (ici on peut comptabiliser les additions et les multiplications) dépend du nombre de fois où l'on execute le corps de la boucle for, c'est à dire n. ###################################################### ############# Exercice 2 ########################## ## L'ensemble de valeurs pour lequels l'expression ## x >= 2 and x < 12 and (x == 3 or x % 2 != 1) ## est {2,3,4,6,8,10} car les conditions à satisfaire au même temps sont: ## -- être un nombre dans l'intervalle de 2 (inclus) à 12 (exclu) ## -- être égal à 3 ou être un nombre pair (reste de la division par 2 différent de 1, donc égal à 0) ###################################################### ############# Exercice 3 ########################## ## version 1: def estNulleSommeElements(L: list) -> bool : s = 0 for elt in L: ## elt contiendra successivement les valeurs des éléments de L s = s + elt return s == 0 ## version 2: def estNulleSommeElements(L: list) -> bool : s = 0 for i in range(len(L)): ## i contiendra successivement les indices, entre 0 et len(L)-1, des éléments de L s = s + L[i] return s == 0 ###################################################### ############# Exercice 4 ########################## ###### question1 ####### from bibimages import * def imageDrapCadre(image): l=largeurImage(image) h=hauteurImage(image) # cadre noir for x in range(l): colorierPixel(image, x, 0, (0, 0, 0)) # bord haut colorierPixel(image, x, h-1, (0, 0, 0)) # bord bas for y in range(h): colorierPixel(image, 0, y, (0, 0, 0)) # bord gauche colorierPixel(image, l-1, y, (0, 0, 0)) # bord droit # drapeau tricolore tiers=(l-2)//3 for x in range(1,tiers+1): # bande bleue for y in range(1,h-1): colorierPixel(image, x, y, (0, 0, 255)) for x in range(tiers+1,2*tiers+1): # bande blanche for y in range(1,h-1): colorierPixel(image,x,y,(255,255,255)) for x in range(2*tiers+1,l-1): # bande rouge for y in range(1,h-1): colorierPixel(image, x, y, (255, 0,0)) ###### question2 ####### NewImage = nouvelleImage (300, 200) imagDrapCadre(NewImage) afficherImage(NewImage) ###################################################### ############# Exercice 5 ########################## ###### question1 ####### ## version 1: def nbVoyelles(s: str) -> int : nb = 0 for c in s: ## c contiendra successivement chaque caractère de la chaîne s if estVoyelle(c): nb = nb +1 return nb ## version 2: def nbVoyelles(s : str) -> int : nb = 0 for i in range(len(s)): ## i contiendra successivement les indices, entre 0 et len(s)-1, des caractères de s if estVoyelle(s[i]): nb = nb +1 return nb ###### question2 ####### def javanais(s: str) -> str : s1 = "" for c in s: if estVoyelle(c): s1 = s1 + "av" + c else: s1 = s1 + c return s1 ## remarque: comme à la question 1 on peut aussi accèder à chaque caractère de la chaîne s par son indice. ###################################################### ############# Exercice 6 ########################## ## Suite de Fibonacci: 8 premiers termes # 6.1) ## F0 F1 F2 F3 F4 F5 F6 F7 ## 0 1 1 2 3 5 8 13 # 6.2) def fibonacci(n: int) -> int : tab = [0]*n tab[1] = 1 for i in range(2,n): tab[i] = tab[i-1] + tab[i-2] return tab