Les conditions et les boucles#

Conditions#

Le résultat d’un test est soit positif (True), soit négatif (False).

>>> 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.

if True:
    print('Ok')
else:
    print('nOk')

Il est possible d’enchaîner les tests.

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.

match val:
    case 100:
        print('Val = 100')
    case 200:
        print('Val = 200')
    case others:
        print('Val = -1')
Questions

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

Réponses
>>> 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 "<stdin>", line 1
not a = 7 and b = 6
^
SyntaxError: cannot assign to operator

Les boucles#

>>> 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
Questions
  • É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 ?

Réponses
>>> 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 <nom du fichier.py> »