Help, j'ai besoin d'un coup de main..

Help, j'ai besoin d'un coup de main.. - Python - Programmation

Marsh Posté le 27-11-2012 à 19:26:38    

Code :
  1. def o():
  2.     print()
  3.     programme()
  4. def n():
  5.     quit()
  6. def programme():
  7.    
  8.    
  9.     print ("##################" )
  10.     print("Entrer le jour:" )
  11.     Jours=input()
  12.     Jours=int(Jours)
  13.     print("Entrer le mois:" )
  14.     Mois=input()
  15.     Mois=int(Mois)
  16.     print("Entrer l'Année(Superieur ou égale à 1960):" )
  17.     Année=input()
  18.     Année=int(Année)
  19.     DateValable(Jours, Mois, Année)
  20.     print()
  21.     CalculJourDepuis1960(Jours, Mois, Année)
  22.     print()
  23.    
  24.     CalculJour(CalculJourDepuis1960)
  25.     print()
  26.     x=input("Voulez-vous recommencer ? o/n : " )                                                                                                       #Si la date rentrée n'a pas trouver sa place parmi toutes les conditions c'est que ce n'est pas une date valable.
  27.     if x=="o":
  28.         o()
  29.     else:
  30.         n()
  31. #######################################################
  32. #"Date Valable"
  33. #Marc Bouin Terminale SSI
  34. #Lycée Réaumur - Laval
  35. #######################################################
  36. def DateValable(Jours, Mois, Année):                                                                                                              # Ce programme a pour but de dire si une date existe ou pas en fonction des années bissextile.
  37.    
  38.      b = Année%4                                                                                                                                      # on définit b, c et d pour pouvoir différencier les années bissextile des autres années par la suite.
  39.      c = Année%100
  40.      d = Année%400
  41.      
  42.      if b != 0 and Mois%2==0 and  Mois in range(1,8)and Année >= 1960 and Jours in range(1,31) or Mois==2 and Jours in range(1,29):                    #Si l'année n'est pas bissextile (non divisible par 4) et pour les mois de 1 à 7 divisible par 2 on a 30 jours éxcepté le mois de février qui aura 28 jours.
  43.           print("Date Valable." )
  44.      elif  b != 0 and Mois%2!=0 and  Mois in range(1,8)and Année >= 1960 and Jours in range(1,32):                                                     #Sinon on a 31 jours.
  45.           print("Date Valable." )
  46.      elif  b != 0 and Mois%2==0 and  Mois in range(8,13)and Année >= 1960 and Jours in range(1,32):                                                    #Si l'année n'est pas bissextile (non divisible par 4) et pour les mois de 8 à 12 divisible par 2 on a 31 jours.
  47.           print("Date Valable." )
  48.      elif  b != 0 and Mois%2!=0 and  Mois in range(8,13)and Année >= 1960 and Jours in range(1,31):                                                    #Sinon on a 30 jours.
  49.           print("Date Valable." )
  50.                                                                                                                  
  51.          
  52.      elif b == 0 and c != 0 and Mois%2==0 and  Mois in range(1,8)and Année >= 1960 and Jours in range(1,31) or Mois==2 and Jours in range(1,30):       #Si l'année est bissextile (divisible par 4 mais non divisible par 100) et pour les mois de 1 à 7 divisible par 2 on a 30 jours éxcepté le mois de février qui aura 29 jours.
  53.           print("Date Valable." )
  54.      elif b == 0 and c != 0 and Mois%2!=0 and  Mois in range(1,8) and Année >= 1960 and Jours in range(1,32):                                          #Sinon on a 31 jours.
  55.           print("Date valable." )
  56.      elif b == 0 and c != 0 and Mois%2==0 and  Mois in range(8,13) and Année >= 1960 and Jours in range(1,32):                                         #Si l'année est bissextile (divisible par 4 mais non divisible par 100) et pour les mois de 8 à 12 divisible par 2 on a 31 jours.
  57.           print("Date valable." )
  58.      elif b == 0 and c != 0 and Mois%2!=0 and  Mois in range(8,13) and Année >= 1960 and Jours in range(1,31):                                         #Sinon on a 30 jours.
  59.           print("Date valable." )
  60.      elif d == 0 and Mois%2==0 and  Mois in range(1,8) and Année >= 1960 and Jours in range(1,31) or Mois==2 and Jours in range(1,30):                 #Si l'année est bissextile (divisible par 400 pour ces dernières conditions) et pour les mois de 1 à 7 divisible par 2 on a 30 jours éxcepté le mois de février qui aura 29 jours.
  61.           print("Date valable." )
  62.      elif d == 0 and Mois%2!=0 and  Mois in range(1,8) and Année >= 1960 and Jours in range(1,32):                                                     #Sinon on a 31 jours.
  63.           print("Date valable." )
  64.      elif d == 0 and Mois%2==0 and  Mois in range(8,13) and Année >= 1960 and Jours in range(1,32):                                                    #Si l'année est bissextile (divisible par 400 pour ces dernières conditions) et pour les mois de 8 à 12 divisible par 2 on a 31 jours.
  65.           print("Date valable." )
  66.      elif d == 0 and Mois%2!=0 and  Mois in range(8,13) and Année >= 1960 and Jours in range(1,31):                                                    #Sinon on a 30 jours.
  67.           print("Date valable." )   
  68.      else :
  69.           x=input("Date non valable, recommencez ? o/n : " )                                                                                                       #Si la date rentrée n'a pas trouver sa place parmi toutes les conditions c'est que ce n'est pas une date valable.
  70.           if x=="o":
  71.               o()
  72.           else:
  73.               n()
  74. #######################################################
  75. #"Calcul de Jours depuis 1960"
  76. #Benoît Taunais Terminale SSI
  77. #Lycée Réaumur - Laval
  78. #######################################################
  79. def bissextile(Année):
  80.     r=Année%4                                                   #On associe à r le reste de la division euclidienne de l'Année par 4
  81.     s=Année%100                                                 #On associe à s le reste de la division euclidienne de l'Année 100
  82.     t=Année%400                                                 #On associe à t le reste de la division euclidienne de l'Année par 400
  83.     if r!=0:
  84.         b = 0
  85.     elif s==0:
  86.         if t!=0:
  87.             b = 0
  88.         else:
  89.             b = 1
  90.     else:
  91.         b = 1
  92.     return b
  93. def CalculJourDepuis1960(Jours, Mois, Année):
  94.        
  95.     Sommejours=0
  96.     if Mois==1:
  97.         Sommejours=Jours                                                           # JANVIER
  98.     elif Mois==2:
  99.         Sommejours=31+Jours                                                        #Janvier + Jours
  100.     elif Mois==3:
  101.         Sommejours=59+bissextile(Année)+Jours                                             #28+ bissextile +31 + Jours
  102.     elif Mois==4:
  103.         Sommejours=90+bissextile(Année)+Jours                                             #31+28+ bissextile +31 + Jours 
  104.     elif Mois==5:
  105.         Sommejours=120+bissextile(Année)+Jours                                            #30+31+28+ bissextile +31 + Jours
  106.     elif Mois==6:
  107.         Sommejours=151+bissextile(Année)+Jours                                            #31+30+31+28+ bissextile +31 + Jours
  108.     elif Mois==7:
  109.         Sommejours=181+bissextile(Année)+Jours                                            #30+31+30+31+28+ bissextile +31 + Jours
  110.     elif Mois==8:
  111.         Sommejours=212+bissextile(Année)+Jours                                            #31+30+31+30+31+28+ bissextile +31 + Jours
  112.     elif Mois==9:
  113.         Sommejours=243+bissextile(Année)+Jours                                            #31+31+30+31+30+31+28+ bissextile +31 + Jours
  114.     elif Mois==10:
  115.         Sommejours=273+bissextile(Année)+Jours                                            #30+31+31+30+31+30+31+28+ bissextile +31 + Jours
  116.     elif Mois==11:
  117.         Sommejours=304+bissextile(Année)+Jours                                            #31+30+31+31+30+31+30+31+28+ bissextile +31 + Jours
  118.     elif Mois==12:
  119.         Sommejours=334+bissextile(Année)+Jours                                            #30+31+30+31+31+30+31+30+31+28+ bissextile +31 + Jours
  120.     #
  121.     CalculJourDepuis1960=Sommejours
  122.     for i in range (1960,Année):
  123.         CalculJourDepuis1960= CalculJourDepuis1960 + 365 + bissextile(i)
  124.        
  125.     print (CalculJourDepuis1960)
  126.    
  127.     return (CalculJourDepuis1960)
  128. ###################################################################
  129. ######################################################
  130. #Fonction CalculJour : Affiche le jour correspondant.#
  131. ###EDIT BY JOREL, 23/11/2012##
  132. #----------------------------------------------------#
  133. def CalculJour(CalculJourDepuis1960):
  134.     # nombreJours
  135.    
  136.  
  137.     jour = ['Jeudi','Vendredi','Samedi','Dimanche','Lundi','Mardi','Mercredi']              #Le 01/01/1960 était un Vendredi.
  138.     a, b = 0, 0                                                                             #Créer 2 nombre a & b = 0
  139.     while a<CalculJourDepuis1960:                                                                    #Tant que a < nombreJours, alors :
  140.         a = a + 1                                                                           #On ajoute 1 à a
  141.         b = a % 7                                                                           # b prend la valeur du reste de la division de a par 7
  142.     print("Ce jour est un", jour[b],"." )                                                    #Affiche le jour correspondant.
  143. #####################################################
  144. programme()


Voici mon programme, le but : en entrant une date à partir du 01/01/1960 jusqu'à aujourd'hui, le programme doit me répondre le nom du jour de la date entrée (lundi, mardi,...).
Mon problème est dans cette partie là :  

Code :
  1. def CalculJour(CalculJourDepuis1960):
  2.     # nombreJours
  3.    
  4.  
  5.     jour = ['Jeudi','Vendredi','Samedi','Dimanche','Lundi','Mardi','Mercredi']              #Le 01/01/1960 était un Vendredi.
  6.     a, b = 0, 0                                                                             #Créer 2 nombre a & b = 0
  7.     while a<CalculJourDepuis1960:                                                                    #Tant que a < nombreJours, alors :
  8.         a = a + 1                                                                           #On ajoute 1 à a
  9.         b = a % 7                                                                           # b prend la valeur du reste de la division de a par 7
  10.     print("Ce jour est un", jour[b],"." )                                                    #Affiche le jour correspondant.


 
Lorsque je lance le programme, IDLE me répond :

Code :
  1. ##################
  2. Entrer le jour:
  3. 27
  4. Entrer le mois:
  5. 11
  6. Entrer l'Année(Superieur ou égale à 1960):
  7. 2012
  8. Date valable.
  9. 19325
  10. Traceback (most recent call last):
  11.   File "I:\programmes\projet\testprojet.py", line 160, in <module>
  12.     programme()
  13.   File "I:\programmes\projet\testprojet.py", line 25, in programme
  14.     CalculJour(CalculJourDepuis1960)
  15.   File "I:\programmes\projet\testprojet.py", line 151, in CalculJour
  16.     while a<CalculJourDepuis1960:                                                                    #Tant que a < nombreJours, alors :
  17. TypeError: unorderable types: int() < function()


 
Donc le nombre CalculJourDepuis1960, ici "19325", n'est pas considéré comme un nombre mais comme une fonction. Comment puis je faire pour utiliser ce nombre pour la suite de mon programme ? J'ai essayé toutes les possibilités que je connais et je n'y arrive pas =(.

Reply

Marsh Posté le 27-11-2012 à 19:26:38   

Reply

Marsh Posté le 28-11-2012 à 10:37:11    

xordiz a écrit :

Donc le nombre CalculJourDepuis1960, ici "19325", n'est pas considéré comme un nombre mais comme une fonction.


C'est considéré comme une fonction parce que c'est une fonction. Aux lignes 22 et 25, "CalculJourDepuis1960" est la même chose: la fonction définie à la ligne 101.

xordiz a écrit :

Comment puis je faire pour utiliser ce nombre pour la suite de mon programme ?


Réaliser que Python c'est pas Visual Basic, apprendre Python et réfléchir à ce que tu écris?

xordiz a écrit :

J'ai essayé toutes les possibilités que je connais et je n'y arrive pas =(.


Apprendre Python (bis repetita). Et fixer tes conventions de nommage parce que là c'est horrible (un indice chez vous: noms des variable en anglais, en minuscules, avec les mots séparés par des underscores). Les lists et les maps ce serait pas du luxe non plus. Et les variables intermédiaires utiles avec des noms utiles (genre "leapyear" c'est plus clair que "b == 0 and c != 0 and d == 0", et ça évite d'oublier la 3e clause). Et apprendre à utiliser la stdlib, parce que la "logique" du programme prend environ une ligne:

Code :
  1. datetime.date(year, month, day).weekday()


Message édité par masklinn le 28-11-2012 à 10:41:14

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 23-03-2013 à 11:48:30    


Bonjour à tous,
Aidez  moi svp pour résoudre deux problèmes en programmation en C  
Premièrement :
• Écrire une fonction de saisie des coordonnées
d'un étudiant
• Écrire une fonction d'affichage des
coordonnées d'un étudiant
• Écrire une fonction de sauvegarde des
coordonnées d'un étudiant dans un fichier
• Écrire une fonction de lecture des
coordonnées d'un étudiant dans un fichier  
secundo :
Faite une application de gestion d’une  bibliothèque permettant d’enregistrer les livres
avec les informations suivantes : cote qui est numéro permettant d’identifier un livre de  manière unique , l’auteur, l’édition, nombre de page, nombre exemplaire, date publication et
d’autre information que vous jugerez nécessaire et justifiées.
L’application doit avoir un menu permettant de réaliser les fonctions suivantes :
1. Enregistrer des livres
2. Afficher la liste ordonnée des livres
3. Rechercher un livre à partir de sa cote
4. Afficher les livres d’un auteur donné
5. Supprimer un livre dont on connaît la cote
6. Enregistrez les livres dans un fichier nome mes livres.doc
7. Charger les livres enregistrés du fichier mes livres.doc vers le tableau ou la liste
chaînée.
8. Bonus ajouter une fonction nommée connexion() par laquelle l’utilisateur va
s’identifier en entrant un mot de passe de 6 caractères.
 
 
Merci à tous et bonne continuation !

Reply

Marsh Posté le 23-03-2013 à 12:42:49    

Non. C'est pas la sous-cat C ici (c'est Python) et les règles du forum interdisent de faire les exercices des gens.


Message édité par masklinn le 23-03-2013 à 12:43:04

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 23-03-2013 à 13:19:40    

[OK MERCI !

Reply

Marsh Posté le 23-03-2013 à 22:45:54    

Tout est dit. Fermeture du sujet.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed