Les conditions et les boucles ============================= Conditions ---------- Le résultat d'un test est soit positif (``True``), soit négatif (``False``). .. code:: python >>> 15 == 3*5 True >>> 15 < 12 False >>> 15 < 6 < 12 False >>> 3*5 in [5, 13, 15, 44] True >>> 3*5 == 15 and 'Nom' in mydict.keys() False La syntaxe utilisée pour réaliser un test est décrite ci-dessous. Noter la présence de tabulation pour délimiter la portée du test. .. code:: python if True: print('Ok') else: print('nOk') Il est possible d'enchaîner les tests. .. code:: python if val == 100: print('Val = 100') elif val == 200: print('Val = 200') else: print('Val = -1') Depuis Python 3.11, on peut créer une nouvelle forme de test. .. code:: python match val: case 100: print('Val = 100') case 200: print('Val = 200') case others: print('Val = -1') .. dropdown:: Questions :color: success :icon: codescan-checkmark Si a = 6 et b = 7, répondez aux questions suivantes: * a == 6 and b == 7 * a = 7 and b == 7 * not a == 7 and b == 7 * a == 7 or b == 7 * a == 7 or b == 6 * not (a == 7 and b == 6) * not a = 7 and b = 6 .. dropdown:: Réponses :color: info :icon: thumbsup .. code:: python >>> a == 6 and b == 7 True >>> a = 7 and b == 7 # Attention. Pas des résultats car affectation de a et non test >>> >>> not a == 7 and b == 7 True >>> a == 7 or b == 7 True >>> a == 7 or b == 6 False >>> not (a == 7 and b == 6) True >>> not a = 7 and b = 6 # Erreur due à l'absence de tests. File "", line 1 not a = 7 and b = 6 ^ SyntaxError: cannot assign to operator \ Les boucles ----------- .. code:: python >>> for i in range(0,3): # Parcours la liste des valeurs fournies par range(0,3) ... print(i) 0 1 2 >>> words = ["Chat", "Chien", "Licorne"] >>> for w in words: ... print(w) Chat Chien Licorne >>> a = 0 >>> while a < 3: # Execute la boucle tant que a est supérieur à 10 ... print(a) ... a = a + 1 ... else: ... print('Fin') 0 1 2 .. dropdown:: Questions :color: success :icon: codescan-checkmark * Écrire un programme qui affiche une suite de 12 nombres dont chaque terme soit égal au triple du terme précédent. * On se propose de lister tous les jours pairs de la semaine. Proposez une boucle avec condition listant ces jours. * Écrire un programme qui affiche les 5 premiers multiples de 7. * Écrire un programme qui affiche les 5 premiers multiples de 7 en formattant les nombres en utilisat la fonction `zfill`. * Comment faire apparaître à l'aide d'une boucle de 0 à 1000, uniquement des nombres premiers ? .. dropdown:: Réponses :color: info :icon: thumbsup .. code:: python >>> a=int(input("Entrez un nombre : ")) >>> for i in range(0,12): ... print(i+1,a) ... a=a*3 >>> sem = ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche'] >>> for s in range(0,len(sem),2): ... print(sem[s]) >>> import calendar # Méthode plus "industrielle" s'appuyant sur un module dédié. >>> days = list(calendar.day_name) >>> for d in range(0,len(days),2): ... print(days[d]) >>> for i in range(0,5): ... print(7*i) >>> for i in range(0,5): ... print('7 x {} = {}'.format(str(i).zfill(2),str(i*7).zfill(3))) >>> n=1000 >>> NbPrem = [] >>> for i in range(2,n+1): ... if len(NbPrem) == 0: ... NbPrem.append(i) ... else: ... prem = True ... for k in NbPrem: ... if i % k == 0: ... prem = False ... if prem == True: ... NbPrem.append(i) ... print([1,]+NbPrem) .. note:: Il est plus pratique, à partir de maintenant, de travailler à partir de fichiers. 1. Créez un fichier avec extension .py 2. Tapez le code dans le fichier 3. Exécutez le code en utilisant la commande "python " \