code coucher du soleil avec python

a marqué ce sujet comme résolu.

Bonjour J’ai écrit ce code qui renvoie False si le soleil est couché et True lorsque le soleil est levé après avoir rentré 3 valeurs: "lever", "coucher" et "actuelle". Sur cette planète, un journée va de 0h à 23h. Voici ce code:

def soleil_leve(lever, coucher, actuelle):
    actuelle >= 0 and actuelle <23
    if coucher == lever == 0:
        return True
    elif coucher ==  lever == 12:
        return False
    elif lever<coucher and lever<=actuelle<coucher or coucher<lever and not coucher<=actuelle<lever:
        return True
    else:
        return False

Maintenant, je doit écrire le suite en considérant deux soleils: E1515 et E666 qui lit en entrée :

  • l’heure de lever du soleil E1515
  • l’heure du coucher du soleil E1515
  • l’heure de lever du soleil E666
  • l’heure du coucher du soleil E666

et qui utilise la fonction soleil_leve pour afficher ligne par ligne chacune des heures de la journée, depuis 0 jusqu’à 23, suivies d’une espace et d’une astérisque s’il fait nuit à cette heure. Il ne fera nuit que si E1515 et E666 sont tous deux couchés.

Voici par exemple ce qui doit s’afficher lorsqu’on rentre les valeurs 6, 18, 10, 21:

0 *
1 *
2 *
3 *
4 *
5 *
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 *
22 *
23 *

Les heures accompagnées dune étoile sont celles où il fait nuit.

Je ne suis pas habitué à l’utilisation des fonctions. Je souhaite donc avoir des orientations pour écrire le code qui accompagne cette fonction pour afin d’avoir le résultat attendu.

+0 -0

Salut !

(Je me suis permis de reformater les codes de ton message afin qu’on puisse les lire ; essaie de modifier ton message pour voir comment j’ai fait)

Déjà dans ta fonction soleil_leve : elle fonctionne, mais son code n’est pas très conventionnel, disons. Notamment, la ligne surlignée ne sert à rien (elle est exécutée mais sa valeur de retour n’est jamais utilisée, donc concrètement, on peut l’enlever sans rien changer).

def soleil_leve(lever, coucher, actuelle):
    actuelle >= 0 and actuelle <23
    if coucher == lever == 0:
        return True
    elif coucher == lever == 12:
        return False
    elif lever<coucher and lever<=actuelle<coucher or coucher<lever and not coucher<=actuelle<lever:
        return True
    else:
        return False

Sur le problème en lui-même — tu as une fonction qui te dit s’il fait jour selon une étoile, et tu veux qu’il fasse jour suivant deux. En soit, une fonction, c’est juste un outil que tu peux réutiliser à volonté pour faire d’autres tâches. Par exemple, si tu as défini ta fonction plus haut, tu peux l’exécuter et stocker les résultats dans une variable (ici, arbitrairement, pour 14h) :

soleil_leve_dans_e1515 = soleil_leve(6, 18, 14)

et cette variable contiendra ici True. Tu peux faire de même avec l’autre bien sûr, rien n’empêche d’utiliser une fonction deux fois (c’est même tout l’intérêt) :

soleil_leve_dans_e666 = soleil_leve(10, 21, 14)

Après il ne te reste qu’à combiner ça pour déterminer qu’il fait jour si au moins l’une des deux vaut True. Je te laisse y réfléchir, mais ça ne devrait pas être trop compliqué :) .

Ensuite, il ne restera plus qu’à faire ça pour tous les nombres de 0 à 23, et en remplaçant les valeurs numériques en dur par des valeurs venant de l’utilisateur

+0 -0

Salut !

(Je me suis permis de reformater les codes de ton message afin qu’on puisse les lire ; essaie de modifier ton message pour voir comment j’ai fait)

Déjà dans ta fonction soleil_leve : elle fonctionne, mais son code n’est pas très conventionnel, disons. Notamment, la ligne surlignée ne sert à rien (elle est exécutée mais sa valeur de retour n’est jamais utilisée, donc concrètement, on peut l’enlever sans rien changer).

def soleil_leve(lever, coucher, actuelle):
    actuelle >= 0 and actuelle <23
    if coucher == lever == 0:
        return True
    elif coucher == lever == 12:
        return False
    elif lever<coucher and lever<=actuelle<coucher or coucher<lever and not coucher<=actuelle<lever:
        return True
    else:
        return False

Sur le problème en lui-même — tu as une fonction qui te dit s’il fait jour selon une étoile, et tu veux qu’il fasse jour suivant deux. En soit, une fonction, c’est juste un outil que tu peux réutiliser à volonté pour faire d’autres tâches. Par exemple, si tu as défini ta fonction plus haut, tu peux l’exécuter et stocker les résultats dans une variable (ici, arbitrairement, pour 14h) :

soleil_leve_dans_e1515 = soleil_leve(6, 18, 14)

et cette variable contiendra ici True. Tu peux faire de même avec l’autre bien sûr, rien n’empêche d’utiliser une fonction deux fois (c’est même tout l’intérêt) :

soleil_leve_dans_e666 = soleil_leve(10, 21, 14)

Après il ne te reste qu’à combiner ça pour déterminer qu’il fait jour si au moins l’une des deux vaut True. Je te laisse y réfléchir, mais ça ne devrait pas être trop compliqué :) .

Ensuite, il ne restera plus qu’à faire ça pour tous les nombres de 0 à 23, et en remplaçant les valeurs numériques en dur par des valeurs venant de l’utilisateur

Amaury

Bonjour Amaury Merci pour ces indications. Je vais essayer de les mettre en application. Comment peut-on faire apparaître les astérisques à la suite des heures où il fait nuit?

Il te suffit d’utiliser une condition quand tu affiches la ligne. Imaginons que tu aies le fait qu’il fasse nuit dans une variable fait_nuit ; alors tu peux utiliser quelque chose comme ça :

if fait_nuit:
  print(heure, '*')
else:
  print(heure)

Tu peux aussi enchaîner deux print pour éviter la répétition du code, mais il faut alors demander à Python de ne pas mettre le retour à la ligne qu’il ajoute automatiquement aux affichages de print :

print(heure, end='')
if fait_nuit:
  print(' *')
+0 -0

Salut, tu avais reçu plusieurs réponses sur ce sujet mais pas donné plus de nouvelles, sur quoi est-ce que tu bloques ?

entwanne

Bonjour entwanne C’est vrai que j’ai reçu des proposition intéressantes et je remercie chacun de vous. Comme c’est la première fois que j’utilise les fois, je tatonne encore parce que je ne sais pas comment cela fonctionne exactement. Avec les recommandations de Amaury, je me demande s’il faut lister tous les cas de figure où il fait nuit et tous les cas de figure où il fait jours pour chacun des deux soleils? Comment également appeler la fonction "soleil_leve" dans le code qui affichera les résultats? Voilà donc mes dernières préoccupations.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte