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