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
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - 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())