A voir également:
- Syntaxe erreur
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur 5000 france tv - Forum iPhone
- Erreur g030 - Forum Bbox Bouygues
1 réponse
Bonjour,
Quand on a une erreur, ben on donne cette erreur que python lance.
Bon, là, pas difficile de voir où elle est.
Il n'est pas possible de comparer 2 tuples, et puis ce n'est pas comme ça qu'on doit faire ce test.
On doit soustraire un an si le mois courant est inférieur, ou si le mois courant est le même et le jour courant inférieur.
De plus, tu dois vérifier que la date fournie est valide dans ta fonction ask_for_date, on peut faire ça simplement avec une regex, puis aussi vérifier que l'année est située dans un intervalle, puis passer la date à datetime.date, qui pourra nous envoyer bouler si par exemple on met un 29 février d'une année non bissextile.
Quand on a une erreur, ben on donne cette erreur que python lance.
Bon, là, pas difficile de voir où elle est.
Il n'est pas possible de comparer 2 tuples, et puis ce n'est pas comme ça qu'on doit faire ce test.
On doit soustraire un an si le mois courant est inférieur, ou si le mois courant est le même et le jour courant inférieur.
De plus, tu dois vérifier que la date fournie est valide dans ta fonction ask_for_date, on peut faire ça simplement avec une regex, puis aussi vérifier que l'année est située dans un intervalle, puis passer la date à datetime.date, qui pourra nous envoyer bouler si par exemple on met un 29 février d'une année non bissextile.
import datetime import re def ask_for_date(name, delta_min=0, delta_max=0): message = 'Enter {} (yyyy/mm/dd) : '.format(name) while True: data = input(message) # data = raw_input(message) # python2 est mort vive python3 ! m = re.match('^(\d{4})/(\d{1,2})/(\d{1,2})$', data) if m: year, month, day = map(int, m.groups()) current_year = datetime.date.today().year if current_year - delta_min >= year >= current_year - delta_max: try: date = datetime.date(year, month, day) except ValueError: pass else: return date print('Invalid date !') def calculate_age(): born_date = ask_for_date('your date of birth', 16, 120) current_date = datetime.date.today() years = today.year - born_date.year if ( current_date.month < born_date.month or current_date.month == born_date.month and current_date.day < born_date.day ): years -= 1 return years print(calculate_age())