Syntaxe erreur
William
-
trifou -
trifou -
Bonjour,
Je ne trouve pas mon erreur!
Je ne trouve pas mon erreur!
def ask_for_date(name): data = raw_input('Enter' + name +'(yyyy mm dd):').split('') try: return data(int(data[0]), int(data[1]), int(data[2])) except exception as e: print(e) print('invalid input.follow the given format') ask_for_date(name) def calculate_age(): born = ask_for_date('your date of birth') today = date.today() extra_year = 1 if ((today.month, today.day) < (bien.month, born.day)) else 0 return today.year - bien.year - extra_year print(calculate_age())
Configuration: Android / Chrome 79.0.3945.93
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Syntaxe erreur
- Erreur 0x80070643 - Accueil - Windows
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- Java code erreur 1603 ✓ - Forum Windows
- Comment recuperer whatsapp supprimé par erreur - Guide
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())