Afin de pouvoir mieux combattre les différentes épidémies, parfois très graves, qui se développent régulièrement dans la région, le département de médecine de l'université a lancé une grande étude. En particulier, les chercheurs s'intéressent à la vitesse de propagation d'une épidémie et donc à la vitesse à laquelle des mesures sanitaires doivent êtres mises en place.
Ce que doit faire votre programme :
Votre programme doit d'abord lire un entier, la population totale de la ville. Sachant qu'une personne était malade au jour 1 et que chaque malade contamine deux nouvelles personnes le jour suivant (et chacun des jours qui suivent), vous devez calculer à partir de quel jour toute la population de la ville sera malade.
Exemples
Exemple 1
entrée :
3
sortie :
2
Exemple 2
entrée :
10
sortie :
4
Commentaires
On a 1 malade le premier jour, donc 2 nouveaux malades le second jour, soit un total de 3 malades. On a donc 6 nouveaux malades au troisième jour, soit un total de 9 malades. On a donc 18 nouveaux malades au quatrième jour, soit…
Faire la même chose plusieurs fois : le « tant que »
On a parfois besoin de répéter certaines instructions jusqu'à ce qu'un certain changement ce soit produit. Par exemple, demander un mot de passe tant que l'utilisateur n'a pas donné le bon.
On a ici utilisé dans la phrase le terme « tant que », ce qui signifie qu'on a bien une condition pour savoir quand s'arrêter. On ne peut pas utiliser notre boucle « répéter » habituelle, car on ne sait pas combien de fois l'utilisateur va se tromper !
On va donc faire intervenir une autre boucle : la boucle « tant que », que nous allons manipuler dans ce chapitre.
Elle se nomme while
dans les langages de programmation (traduction en anglais de « tant que »).
secret = 123456 motDePasse = 0 while motDePasse != secret: print("Tapez le mot de passe :") motDePasse = int(input()) print("Vous avez trouvé !")
Ainsi, tant que la condition motDePasse ≠ secret est vraie, on continue à demander un nouveau mot de passe.
On peut représenter l'exécution du programme par le diagramme suivant :
Il est bien sûr possible d'utiliser des opérateurs booléens pour combiner des conditions et les valeurs booléennes sont également utilisables. Voici quelques extraits de code à titre d'exemple :
while True: print("J'attends")
while motDePasse != secret or âgePersonne <= 3: print("Accès refusé : mauvais mot de passe ou personne trop jeune") âgePersonne = int(input()) motDePasse = int(input())
while nbPersonnes <= nbMax and température <= 45: print("Portes ouvertes") nbPersonnes = nbPersonnes + 1 température = int(input())
Le premier de ces trois exemples est ce qu'on appelle une « boucle infinie », c'est-à-dire que le programme ne s'arrête jamais :
comme True
est toujours vrai,
on ne quitte jamais la boucle.
Vous devez être connecté(e) pour résoudre ce problème.
L'inscription ne prendra qu'une minute et vous pourrez alors résoudre les exercices puis faire valider automatiquement vos solutions.
Une fois identifié(e), vous pourrez demander sur cette page des conseils pour résoudre le sujet ou demander de l'aide sur le forum d'entraide.
Lorsque vous serez connecté(e), vous pourrez voir vos actions ici.
Une correction détaillée sera disponible lorsque vous aurez résolu le sujet.