Bonjour et bonne année à tous.
Je ne suis pas très aguerri et je n’arrive pas comprendre où j’ai fait mon erreur.
J’essaye, en suivant un tuto relevé sur domadoo d’effectuer un calcul entre deux valeurs, comme présenté sur la pièce jointe, mais cela ne fonctionne pas.
Je ne comprends pas pourquoi.
J’ai « Calcul_lever » qui est à 1.
J’ai « Calcul_coucher » qui est aussi à 1.
Jusque là tout va bien.
Mais dans mon info « Il fait », j’effectue le produit des deux valeurs précédentes, et j’obtiens « 0 » alors que je pensais obtenir 1.
C’est sûrement une bêtise, mais je ne la trouve pas.
Si quelqu’un peut m’expliquer, je lui en serais très reconnaissant.
Bonne journée.
Bonjour,
Il y a surtout beaucoup plus simple, pour savoir si c’est la nuit ou le jour, il suffit de faire cela :
time_between(#time#,#sunset#,#sunrise#)
- Cela donne 0 en journée et 1 la nuit
Pour tester, il suffit de faire :
time_between(2200,#sunset#,#sunrise#)
- Doit donner 1
time_between(#time#,#sunset#,#sunrise#)
Doit donner 0 si vous le faite avant cette nuit
C’est tout !
Si c’est un binaire, c’est 0 ou 1 et non pas"0" ou "1"
@Fabrice : Bon, pourquoi faire simple quand on peut faire compliqué…
Effectivement, cela fonctionne bien comme tu le préconise Fabrice. Merci beaucoup.
Après, j’aimerai bien comprendre pourquoi mon opération ne fonctionne pas, histoire de progresser.
@dan_73 : Je comprends ce que tu dis, mais jà, par rapport à ma pièce jointe, je ne vois pas ce que tu veux dire.
Personnellement, je n’ai rien compris à votre « calcul »
Vous écrivez :
heure du levé du soleil < l’heure courante
Cela doit alors donner un 1 ou un 0
Et vous, vous écrivez :
(heure du levé du soleil < l’heure courante) ? « 0 » : « 1 »
- Lisez cela en Français moi je n’ai pas compris ![]()
pareil que Fabrice, je ne comprend pas ce que vous essayez de faire:
n’oubliez pas un détail en admettant que le lever soit à 7h00:
- 7h00 > 10h00 (s’il est 10h) = 1
- 7h00 > 23h50 toujours = 1
- 7h00 > 01h10 = 0
donc à minuit votre info passe de 1 à 0 jusqu’au prochain lever
faites l’inverse pour heure de coucher…
bref:
- ca veut dire quoi pour vous « calcul_lever »? que devrait représenter cette valeur?
- pareil pour "calcul_coucher?
pour moi ces 2 infos sont inexploitables, je ne vois pas où cela mène.
edit:
faites un tableau avec une ligne du temps => vos deux commandes info seront toujours = 0 ou 1 mais ensemble; donc ca ne sert à rien
autrement dit, lorsque vous aurez résolu votre problème de multiplication, vous aurez toujours 1 entre minuit & le couché et 0 entre le couché et minuit; je doute que ca soit l’info recherchée
Oui Fabrice, pour ce qui est de l’expression :
(#[Maison][Jour-nuit][Lever_Soleil]# > #time#) ? « 0 » : « 1 »
C’est un opérateur ternaire, et ceci fonctionne très bien.
En fonction de l’heure du lever de soleil que j’ai récupéré ailleurs, je teste si l’on est avant ou après cette heure et j’affecte 0 ou 1 en fonction du test.
Je ne pense pas me tromper, et cela fonctionne.
C’est à la dernière ligne que mon opération ne fonctionne pas et je vais tester la piste de dan_73.
ca on connaissait ![]()
par contre faut s’accrocher pour le lire: dans un ternaire le premier cas c’est le « vrai » et vous renvoyer « 0 » hors le « 0 » c’est associé à « faux » par convention; ![]()
techniquement ca fonctionne mais ca fait des nœuds dans le cerveau
btw, un ternaire ne sert à rien ici puisque vous voulez un binaire comme résultat: un simple opérateur logique fait l’affaire ![]()
mais comme vous dites: pourquoi faire simple lorsqu’on peut faire compliqué
J’ai testé et à priori le binaire 0 / 1 ou "0" / "1" ça ne dérange pas, le résultat est bien calculé
Idépendamment du bienfondé de l’utilisation, cela n’explique pas ton résultat
@Mips : Merci pour ta réponse.
En fait pour reprendre ton exemple : Prenons un lever à 7h et un coucher à 18h.
Pour Calcul_lever :
De 0h à 7h mon expression est à 0.
De 7h à 24h elle est à 1.
Pour Calcul_coucher :
De 0h à 18h mon expression est à 1.
De 18h à 24h elle est à 0.
Donc le produit des deux sera à 1 uniquement de jour, entre 7h et 18h.
Mais c’est ce produit qui ne fonctionne pas.
Merci encore pour votre réactivité.
@dan_73 : Merci pour ton test. Effectivement, chez moi : 1 x 1 = 0
C’est étrange…
As-tu essayé d’enlever les guillemets autour de 0 et 1 dans ton test ternaire?
Oui, merci, selon les conseils de dan_73, j’ai essayé et invariablement, le produit de mes deux états fait zéro…
A tout hasard, tu n’aurais pas coché par indavertence la case "Inverser" sur ta commande "il fait" ?
As-tu testé chacune de tes commandes dans le testeur d’expressions, afin de t’assurer du résultat obtenu ?
Ha, zut, je ne connais pas l’usage du « testeur d’expressions », je vais me renseigner.
Désolé, je débute.

Tu fais ça au préalable pour tes 2 commandes Lever et Coucher et tu vérifies les résultats
Effectivement, c’est très utile. J’en découvre tous les jours.
J’ai testé mes trois expressions.et sur la première cela avait donné 1.
Mais là pour le produit, il dit que la première est à 0 ce qui me donne une piste !
Ça y est ! J’ai compris !
Merci à vous, ça m’a débloqué.
En fait, à force de faire des essais, j’avais un autre virtuel qui avait la même variable avec le même nom.
Du coup, en faisant le ménage, ça fonctionne beaucoup mieux !
Bravo à cette magnifique communauté qui est une grande richesse.
J’ai donc deux solution, mes expressions ternaires compliquées, et la solution proposée par Fabrice qui marche très bien.




