Un espion était présent à la grande fête organisée la semaine dernière par le gouverneur. Bien qu'on n'ait pas pu l'identifier, on a réussi à intercepter son rapport et à estimer en fonction de ce qu'il a pu voir, à quelle période il a été présent. Sachant pour chaque invité sa date d'arrivée et de départ, on aimerait interroger tous les suspects potentiels. Vous souhaitez savoir combien de suspects il faudra interroger.
Ce que doit faire votre programme :
On vous donne une période de temps à étudier, et les dates d'arrivée et de départ d'un certain nombre d'invités d'une fête. Écrivez un programme qui détermine combien d'invités ont été présents à un moment de la période étudiée.
Votre programme doit d'abord lire deux entiers : la date de début et la date de fin de la période étudiée. L'entier suivant, nbInvites, est le nombre total d'invités. Pour chaque invité, votre programme doit ensuite lire deux entiers : sa date d'arrivée et de départ. Un invité est suspect si la période à laquelle il a été présent intersecte la période étudiée. Votre programme doit afficher le nombre d'invités suspects.
Exemple
entrée :
8 12 5 4 7 2 11 3 6 1 8 14 19
sortie :
2
Les opérateurs booléens : la négation
Imaginons la situation suivante : vous avez le droit à une réduction si vous avez entre 12 et 25 ans ou si vous avez plus de 60 ans mais, si vous n'avez pas de réduction et que vous faites plus de 5 000km par an, alors vous avez le droit à un cadeau.
Un programme Python traduisant cela pourrait être :
age = int(input()) nbKm = int(input()) if ( (12 <= age) and (age <= 25) ) or (age >= 60): print("Réduction possible") else: print("Pas de réduction") if ( ( (age < 12) or (age > 25) ) and (age < 60) ) and (nbKm >= 5000): print("Cadeau") else: print("Pas de cadeau")
Ce programme est complexe et on sent qu'il y a des répétitions. En effet, si on définit la variable
reductionPossible = ( (12 <= age) and (age <= 25) ) or (age >= 60)
alors on a un cadeau si
réductionPossible
n'est pas vraie et si la longueur du trajet est plus grande que 5000km.
Mais, une condition n'est pas vraie signifie que la condition contraire est vraie !
Il est possible de calculer le contraire d'une condition en Python, en utilisant l'opérateur booléen
not
qui renvoie le contraire de la valeur qu'on lui donne :
age = int(input()) nbKm = int(input()) reductionPossible = ( (12 <= age) and (age <= 25) ) or (age >= 60) if reductionPossible: print("Réduction possible") else: print("Pas de réduction") if ( not (reductionPossible) ) and (nbKm >= 5000): print("Cadeau") else: print("Pas de cadeau")
Le programme est tout de suite beaucoup plus clair !
Lorsqu'on utilise l'opérateur booléen
not
pour avoir le contraire d'une condition, on dit qu'on a pris la négation de la condition.
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.