#!/usr/bin/env python # coding: utf-8 # In[6]: from __future__ import division, print_function # # 13 Boucles for et while # In[7]: from IPython.display import Image Image('../NotesDeCours/images/bart_simpson.jpg') # In[9]: range(100, 109) # In[11]: for i in range(100, 109): print(i, "I will not do this again") # In[12]: for i in range(10): print(i) # ### 13.1 La boucle for # Syntaxe : # ``` # for ELEMENT in LISTE: # ligne d'en-tête se terminant par ":" # INSTRUCTION #1 # bloc d'instructions indenté de 4 espaces # INSTRUCTION #2 # INSTRUCTION #3 # ``` # ### 13.2 Un exemple de boucle for avec Sympy # ### 13.3 Affectation d'une variable # In[14]: s = 0 # ### 13.4 Mise à jour d'une variable # In[15]: s = s + 1 # In[16]: s # ### 13.5 Quelques exemples # Calculer la somme des éléments d'une liste # In[17]: L = range(10) L # In[18]: sum(L) # In[19]: s = 0 for i in L: s = s + i # In[22]: t = 0 #t = t + 1 t += 1 t # Écrivez un programme qui affiche les 20 premiers termes de la table de multiplication par 7. # In[28]: for i in range(20): print(7, 'x', i, '=', 7 * i) # Écrivez un programme qui affiche une suite de 12 nombres dont chaque terme soit égal au triple du terme précédent. # In[30]: terme = 1 for _ in range(12): print(terme) terme *= 3 # Écrivez un programme qui affiche la suite de symboles suivante : # ``` # * # ** # *** # **** # ***** # ****** # ******* # ``` # In[32]: a = 'cheval' a * 10 # In[31]: for i in range(1,8): print('*'*i) # Écrivez un script qui recopie une chaîne (dans une nouvelle variable), en insérant des astérisques entre les caractères. # Ainsi par exemple, `"gaston"` devra devenir `"g*a*s*t*o*n"` # In[34]: 'cheval' + 'gaston' # In[38]: s = 'gaston' t = '' for a in s: t += a + '*' print(t[:-1]) # In[ ]: # ### 13.6 La boucle while # La boucle `while` peut être utile lorsqu'on ne sait pas combien d'itérations on doit faire. # Syntaxe : # ``` # while CONDITION: # ligne d'en-tête se terminant par ":" # INSTRUCTION #1 # bloc d'instructions indenté de 4 espaces # INSTRUCTION #2 # INSTRUCTION #3 # ``` # Écrire un programme qui affiche les puissances de deux inférieures à un milliard. # In[5]: k = 1 while k < 10**9: print(k) k = k * 2 # # ### 13.7 Interrompre une boucle avec break # In[ ]: # Écrire un programme qui affiche les puissances de deux inférieures à un milliard et arrêter le programme si une puissance termine par 88. # In[ ]: # ### 13.8 Continuer une boucle à l'itération suivante avec continue # Écrivez un programme qui calcule les 50 premiers termes de la table de multiplication par 13, mais n’affiche que ceux qui sont des multiples de 7. # In[ ]: # # 14 Conditions if # Syntaxe : # ``` # if CONDITION_1: # ligne d'en-tête se terminant par ":" # INSTRUCTION #1 # bloc d'instructions indenté de 4 espaces # INSTRUCTION #2 # INSTRUCTION #3 # elif CONDITION_2: # INSTRUCTION #4 # bloc d'instructions indenté de 4 espaces # INSTRUCTION #5 # INSTRUCTION #6 # else: # INSTRUCTION #7 # bloc d'instructions indenté de 4 espaces # INSTRUCTION #8 # INSTRUCTION #9 # ``` # Tester si une variable `x` est positive, négative ou nulle. # In[41]: x = -3 if x > 0: print('la variable x est positive') else: if x == 0: print('x est zéro') else: print('la variable x est négative') # In[44]: x = -3 if x > 0: print('la variable x est positive') elif x == 0: print('x est zéro') elif x < 0: print('la variable x est négative') # In[45]: x = -3 if x > 0: print('la variable x est positive') elif x >= 0: print('x est zéro') else: print('la variable x est négative') # Écrivez un script qui compte le nombre d’occurrences du caractère « e » dans une chaîne de caractères. # In[48]: s = 'asldfjhalskjfqwlkjqwteeeeeeeeeas fasdfafds' n = 0 for lettre in s: print("je lis la lettre", lettre, '. Nombre de e vu:', n, end=' ') if lettre == 'e': n += 1 print("nombre de e vu apres lecture:", n) print(n) # Que fait le programme ci-dessous, dans les quatre cas où l’on aurait défini au préalable que la variable `a` vaut 1, 2, 3 ou 15? # ``` # if a != 2: # print('perdu') # elif a == 3: # print('un instant, s.v.p.') # else: # print('gagné') # ``` # In[ ]: # Écrivez un programme qui affiche les 20 premiers termes de la table de multiplication par 7, en signalant au passage (à l’aide d’une astérisque) ceux qui sont des multiples de 3. # Exemple: `7 14 21* 28 35 42* 49...` # In[53]: nombre = 8 for i in range(20): produit = nombre * i if produit % 3 == 0: print(nombre, 'x', i, '=', produit, '*') else: print(nombre, 'x', i, '=', produit) # Écrivez un programme qui analyse un par un tous les éléments d’une liste de nombres pour générer deux nouvelles listes. L’une contiendra seulement les nombres pairs de la liste initiale, et l’autre les nombres impairs. # In[ ]: L = [123, 535, 74764, 14379, 56452546, 2356, 3, 4, 8] # ### 14.1 Syntaxe compacte d'une assignation conditionnelle # In[ ]: # # 15 Fonctions def # Syntaxe : # ``` # def FONCTION(PARAMETRES): # ligne d'en-tête se terminant par ":" # INSTRUCTION #1 # bloc d'instructions indenté de 4 espaces # INSTRUCTION #2 # INSTRUCTION #3 # ``` # Écrire une fonction qui affiche les 10 premiers multiples de 7. # In[57]: def table_7(): nombre = 7 for i in range(20): produit = nombre * i if produit % 3 == 0: print(nombre, 'x', i, '=', produit, '*') else: print(nombre, 'x', i, '=', produit) table_7() table_7() # In[64]: def table(nombre, stop=20): for i in range(stop): produit = nombre * i if produit % 3 == 0: print(nombre, 'x', i, '=', produit, '*') else: print(nombre, 'x', i, '=', produit) table(5) # In[ ]: # Écrire une fonction qui affiche les 10 premiers multiples d'un nombre choisi. # In[ ]: # Écrivez un programme qui calcule le volume d’un parallélépipède rectangle dont sont fournis au départ la largeur, la hauteur et la profondeur. # In[70]: def volume_old(largeur, hauteur, profondeur): print(largeur*hauteur*profondeur) # In[71]: def volume(largeur, hauteur, profondeur): return largeur*hauteur*profondeur # In[72]: v = volume(2,3,4) # In[73]: v + 1 # Écrivez un programme qui calcule le périmètre et l’aire d’un triangle quelconque dont l’utilisateur fournit les 3 côtés. # (Rappel : l’aire d’un triangle quelconque se calcule à l’aide de la formule : # $$ # \sqrt{d(d-a)(d-b)(d-c)} # $$ # dans laquelle d désigne la longueur du demi-périmètre, et a, b, c celles des trois côtés.) # In[ ]: # Écrire un programme qui, étant données deux bornes entières a et b, additionne les nombres multiples de 3 et de 5 compris entre ces bornes. Prendre par exemple a = 0, b = 32 ; le résultat devrait être alors `0+15+30=45`. # In[78]: def ff_and(a, b): s = 0 for i in range(a, b): if i % 3 == 0 and i % 5 == 0 : s += i return s # In[79]: ff(0, 32) # Modifier légèrement ce programme pour qu’il additionne les nombres multiples de 3 ou de 5 compris entre les bornes a et b. Avec les bornes 0 et 32 , le résultat devrait donc être : `0+3+ 5 +6+9+10+12+15+18+20+21+24+25+27+30=225`. # In[84]: def ff_or(a, b): s = 0 for i in range(a, b): print('i=',i,' s=',s) if i % 3 == 0 or i % 5 == 0 : print('youpi pour i = ', i) s += i return s # In[85]: ff_or(0, 32) # Écrire une fonction `est_premier(n)` qui renvoie `True` si `n` est premier et `False` sinon. # In[ ]: # En mathématiques, on appelle suite de Syracuse une suite d'entiers naturels définie de la manière suivante : # # On part d'un nombre entier plus grand que zéro ; s’il est pair, on le divise par 2 ; s’il est impair, on le multiplie par 3 et on ajoute 1. En répétant l’opération, on obtient une suite d'entiers positifs dont chacun ne dépend que de son prédécesseur. # # Par exemple, à partir de 14, on construit la suite des nombres : 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2... C'est ce qu'on appelle la suite de Syracuse du nombre 14. # # https://fr.wikipedia.org/wiki/Conjecture_de_Syracuse # # Écrire une fonction qui calcule la suite de Syracuse d'un nombre et retourne ce résultat sous la forme d'une liste. # In[ ]: # # 16 Autres structures de données # In[ ]: # ### 16.1 Tuples (type tuple) # In[ ]: # ### 16.2 Emballage et déballage d'un tuple # In[ ]: # ### 16.3 Dictionnaires (type dict) # In[ ]: # ### 16.4 Ensembles (type set) # In[ ]: # In[ ]: