Je suis bloque sur un code

diom78 Messages postés 2 Statut Membre -  
mamiemando Messages postés 33228 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 9439 Date d'inscription   Statut Modérateur Dernière intervention   9 977
     
    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 9439 Date d'inscription   Statut Modérateur Dernière intervention   9 977
       
      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 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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