Je suis bloque sur un code

diom78 Messages postés 2 Statut Membre -  
mamiemando Messages postés 33174 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Il vous faut maintenant écrire un programme 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.

Attention, il ne fera nuit que si
E1515
et
E666
sont tous deux couchés.

Et voici le code que j'ai mis :

def soleil_leve(lever, coucher, actuelle):
    actuelle >= 0 and actuelle < 23
    leveE1515 = int(input())
    coucherE1515 = int(input())
    leveE666 = int(input())
    coucherE666 = int(input())
    for i in range (24):
        if (leveE1515 <= i < coucherE1515 and leveE666 <= i < coucherE666):
            print(i)
        else:
            print(i, "*")
soleil_leve(1, 2, 3)


Voici le résultat que ça a donné

L'appel à votre programme sur l'input "6↵18↵10↵21↵" a renvoyé:
0 *
1 *
2 *
3 *
4 *
5 *
6 *
7 *
8 *
9 *
10
11
12
13
14
15
16
17
18 *
19 *
20 *
21 *
22 *
23 *

Le résultat attendu était :
0 *
1 *
2 *
3 *
4 *
5 *
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 *
22 *
23 *

fail L'appel à votre programme sur l'input "15↵8↵6↵17↵" a renvoyé:
0 *
1 *
2 *
3 *
4 *
5 *
6 *
7 *
8 *
9 *
10 *
11 *
12 *
13 *
14 *
15 *
16 *
17 *
18 *
19 *
20 *
21 *
22 *
23 *

Le résultat attendu était :
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

fail L'appel à votre programme sur l'input "15↵8↵10↵13↵" a renvoyé:
0 *
1 *
2 *
3 *
4 *
5 *
6 *
7 *
8 *
9 *
10 *
11 *
12 *
13 *
14 *
15 *
16 *
17 *
18 *
19 *
20 *
21 *
22 *
23 *

Le résultat attendu était :
0
1
2
3
4
5
6
7
8 *
9 *
10
11
12
13 *
14 *
15
16
17
18
19
20
21
22
23


Comment dois-je procéder ?

4 réponses

  1. jee pee Messages postés 31966 Date d'inscription   Statut Modérateur Dernière intervention   10 010
     
    Bonjour,

    Tu as déjà oublié les consignes pour afficher le code source.

    Ton code n'a aucun sens. Tu as une fonction qui reçoit 3 valeurs qui ne sont pas utilisées. La ligne 2 est un sommet de ligne inutile qui ne fait rien et ne sert à rien.

    Si tu as une fonction, c'est pour recevoir les 4 paramétres des heures lever et coucher des 2 soleils, et de faire la saisie dans le corps du programme, il serait bien de mettre des textes sur la question de l'input

    def soleil_leve(l1, c1, l2, c2): 
     ....
    
    leverE1515 = int(input())
    coucherE1515 = int(input())
    leverE666 = int(input())
    coucherE666 = int(input()) 
    soleil_leve(leverE1515, coucherE1515 , leverE666, coucherE666): 
    0
  2. diom78 Messages postés 2 Statut Membre
     
    en gros lorsque je mais 4 valeur au niveau de la fonction sa ne correspond et j ai voulu essaie avec ses 3 valeur
    0
    1. jee pee Messages postés 31966 Date d'inscription   Statut Modérateur Dernière intervention   10 010
       
      3 valeurs qui ne servent à rien, tu as mis 1,2,3 dedans. Il faut partir de la question, tu saisis 4 valeurs, tu les passes à la fonction pour quelle effectue le traitement demandé
      0
  3. mamiemando Messages postés 33174 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Bonjour,

    Il faut réfléchir au design de ton code. Idéalement :
    • Il te faut une fonction (disons
      saisie
      ) qui permet de saisir les heures
      leveE1515
      ,
      coucherE1515
      ,
      leveE666
      ,
      coucherE66
      .

    def saisie():
        leveE1515 = int(input())
        coucherE1515 = int(input())
        leveE666 = int(input())
        coucherE666 = int(input())
        return (leveE1515, coucherE1515, leveE666, coucherE666)
    • Il te faut une seconde fonction (appelée
      soleil_leve
      ) qui prend en paramètre
      leveE1515
      ,
      coucherE1515
      ,
      leveE666
      ,
      coucherE66
      qui itère sur les heures de la journée, et qui affiche la chaîne attendue en fonction des quatre valeurs passées en paramètres.

    def soleil_leve(leveE1515, coucherE1515, leveE666, coucherE666):
        for actuelle in range(24):
            # ...
    • Et enfin, le programme principal, qui fait la glu :

    (leveE1515, coucherE1515, leveE666, coucherE666) = saisie()
    soleil_leve(leveE1515, coucherE1515, leveE666, coucherE666)

    (ou plus court, avec l'opérateur splice) :
    soleil_leve(*saisie())


    Bonne chance
    0