Bonjour,
bienvenue sur le forum ,
heure est une chaîne
[heure for heure in range(8,14,1)] est une liste
heure == [heure for heure in range(8,14,1)] sera donc toujours False
Python considère ces objets comme False:
0 , [] , () , {} .......
Il considère tous les autres comme True, par exemple:
345 est True"lundi" est True
[14,17] est True
une fonction est True etc
Quand il y a un or, le premier True ou objet équivalent à True rencontré est renvoyé.
S’il n’y a pas de résultat de test égal à True ou d’objet considéré comme True dans une succession de or, le renvoi est False.
Par exemple,
0 or “rouge“ renvoie “rouge“
0 or [] renvoie False
heure == [8,13] est toujours False
heure == [8,13] or [14,17] renvoie donc toujours [14,17] puisque [14,17] est considéré True
"lundi" or "mardi" or "mercredi" or "jeudi" or "vendredi"
renvoie toujours “lundi“
Mais
jour == "lundi" or "mardi" or "mercredi" or "jeudi" or "vendredi"
n'est pas
jour == ("lundi" or "mardi" or "mercredi" or "jeudi" or "vendredi")
mais plutot
(jour == "lundi") or "mardi" or "mercredi" or "jeudi" or "vendredi"
Ainsi, quand jour est "lundi" le renvoi est True
et quand jour n'est pas "lundi" le renvoi est le premier objet considéré équivalent à True c'est à dire "mardi"
Donc
jour == "lundi" or "mardi" or "mercredi" or "jeudi" or "vendredi"
renvoie toujours quelque de True
Finalement:
(jour == "lundi" or "mardi" or "mercredi" or "jeudi" or "vendredi") and ( heure == [8,13] or [14,17])
est équivalent à
(True or "mardi") and [14,17]
ce qui au final est considéré comme True
NB:
succession de or: le premier True est renvoyé, si pas de True -> False
succession de and: le dernier True est renvoyé, sinon False
PS:
Delphimaniac a raison. Il fallait non seulement donner la réponse mais aussi trouver la question !
Partager