Je tente de créer un code dans lequel l'utilisateur est invité à indiquer sa date de naissance et la date du jour afin de déterminer son âge. Ce que j'ai écrit jusqu'à présent c'est:
print("Your date of birth (mm dd yyyy)")
Date_of_birth = input("--->")
print("Today's date: (mm dd yyyy)")
Todays_date = input("--->")
from datetime import date
def calculate_age(born):
today = date.today()
return today.year - born.year - ((today.month, today.day) < (born.month, born.day))
age = calculate_age(Date_of_birth)
Cependant, il ne fonctionne pas comme je l'espère. Quelqu'un pourrait-il m'expliquer ce que je fais mal?
Si proche!
Vous devez convertir la chaîne en objet datetime avant de pouvoir effectuer des calculs - voir datetime.datetime.strptime()
.
Pour votre date, vous devez faire:
datetime.strptime(input_text, "%d %m %Y")
#!/usr/bin/env python3
from datetime import datetime, date
print("Your date of birth (dd mm yyyy)")
date_of_birth = datetime.strptime(input("--->"), "%d %m %Y")
def calculate_age(born):
today = date.today()
return today.year - born.year - ((today.month, today.day) < (born.month, born.day))
age = calculate_age(date_of_birth)
print(age)
PS: je vous encourage à utiliser un ordre de saisie raisonnable - dd mm yyyy
ou la norme ISO yyyy mm dd
Cela devrait marcher :)
from datetime import date
def ask_for_date(name):
data = raw_input('Enter ' + name + ' (yyyy mm dd): ').split(' ')
try:
return date(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) < (born.month, born.day)) else 0
return today.year - born.year - extra_year
print(calculate_age())
Vous pouvez également utiliser la bibliothèque date/heure de cette manière. Ceci calcule l’âge en années et supprime l’erreur logique qui renvoie l’âge erroné en raison des propriétés mois et jour.
Comme une personne née le 31 juillet 1999, a 17 ans jusqu'au 30 juillet 2017.
Alors voici le code:
import datetime
#asking the user to input their birthdate
birthDate = input("Enter your birth date (dd/mm/yyyy)\n>>> ")
birthDate = datetime.datetime.strptime(birthDate, "%d/%m/%Y").date()
print("Your birthday is on "+ birthDate.strftime("%d") + " of " + birthDate.strftime("%B, %Y"))
currentDate = datetime.datetime.today().date()
#some calculations here
age = currentDate.year - birthDate.year
monthVeri = currentDate.month - birthDate.month
dateVeri = currentDate.day - birthDate.day
#Type conversion here
age = int(age)
monthVeri = int(monthVeri)
dateVeri = int(dateVeri)
# some decisions
if monthVeri < 0 :
age = age-1
Elif dateVeri < 0 and monthVeri == 0:
age = age-1
#lets print the age now
print("Your age is {0:d}".format(age))