from datetime import datetime
def leer_fecha_nacimiento():
"""
Solicita al usuario que introduzca una fecha de nacimiento por teclado.
Returns:
Tres enteros: dia, mes, anio
"""
print("Fecha de nacimiento")
dia = int(input("Introducir día: "))
mes = int(input("Introducir mes: "))
anio = int(input("Introduce año: "))
return dia, mes, anio
def calcular_edad(dia_fn, mes_fn, anio_fn):
"""
Calcula la edad en años a partir de una fecha de nacimiento.
Args:
dia_fn (int): Día de nacimiento
mes_fn (int): Mes de nacimiento
anio_fn (int): Año de nacimiento
Returns:
int: Edad en años cumplidos
"""
ahora = datetime.now()
edad = ahora.year - anio_fn
if mes_fn > ahora.month or (mes_fn == ahora.month and dia_fn > ahora.day):
edad -= 1
return edad
def mostrar_resultado(edad):
"""
Muestra por pantalla si la persona es mayor o menor de edad.
Args:
edad (int): Edad en años cumplidos
"""
if edad >= 18:
print(f"Es mayor de edad ({edad} años)")
else:
print(f"Es menor de edad ({edad} años)")
# Programa principal
dia_fn, mes_fn, anio_fn = leer_fecha_nacimiento()
edad = calcular_edad(dia_fn, mes_fn, anio_fn)
mostrar_resultado(edad)
ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKCmRlZiBsZWVyX2ZlY2hhX25hY2ltaWVudG8oKToKICAgICIiIgogICAgU29saWNpdGEgYWwgdXN1YXJpbyBxdWUgaW50cm9kdXpjYSB1bmEgZmVjaGEgZGUgbmFjaW1pZW50byBwb3IgdGVjbGFkby4KICAgIFJldHVybnM6CiAgICAgICAgVHJlcyBlbnRlcm9zOiBkaWEsIG1lcywgYW5pbwogICAgIiIiCiAgICBwcmludCgiRmVjaGEgZGUgbmFjaW1pZW50byIpCiAgICBkaWEgPSBpbnQoaW5wdXQoIkludHJvZHVjaXIgZMOtYTogIikpCiAgICBtZXMgPSBpbnQoaW5wdXQoIkludHJvZHVjaXIgbWVzOiAiKSkKICAgIGFuaW8gPSBpbnQoaW5wdXQoIkludHJvZHVjZSBhw7FvOiAiKSkKICAgIHJldHVybiBkaWEsIG1lcywgYW5pbwoKZGVmIGNhbGN1bGFyX2VkYWQoZGlhX2ZuLCBtZXNfZm4sIGFuaW9fZm4pOgogICAgIiIiCiAgICBDYWxjdWxhIGxhIGVkYWQgZW4gYcOxb3MgYSBwYXJ0aXIgZGUgdW5hIGZlY2hhIGRlIG5hY2ltaWVudG8uCiAgICBBcmdzOgogICAgICAgIGRpYV9mbiAoaW50KTogRMOtYSBkZSBuYWNpbWllbnRvCiAgICAgICAgbWVzX2ZuIChpbnQpOiBNZXMgZGUgbmFjaW1pZW50bwogICAgICAgIGFuaW9fZm4gKGludCk6IEHDsW8gZGUgbmFjaW1pZW50bwogICAgUmV0dXJuczoKICAgICAgICBpbnQ6IEVkYWQgZW4gYcOxb3MgY3VtcGxpZG9zCiAgICAiIiIKICAgIGFob3JhID0gZGF0ZXRpbWUubm93KCkKICAgIGVkYWQgPSBhaG9yYS55ZWFyIC0gYW5pb19mbgogICAgaWYgbWVzX2ZuID4gYWhvcmEubW9udGggb3IgKG1lc19mbiA9PSBhaG9yYS5tb250aCBhbmQgZGlhX2ZuID4gYWhvcmEuZGF5KToKICAgICAgICBlZGFkIC09IDEKICAgIHJldHVybiBlZGFkCgpkZWYgbW9zdHJhcl9yZXN1bHRhZG8oZWRhZCk6CiAgICAiIiIKICAgIE11ZXN0cmEgcG9yIHBhbnRhbGxhIHNpIGxhIHBlcnNvbmEgZXMgbWF5b3IgbyBtZW5vciBkZSBlZGFkLgogICAgQXJnczoKICAgICAgICBlZGFkIChpbnQpOiBFZGFkIGVuIGHDsW9zIGN1bXBsaWRvcwogICAgIiIiCiAgICBpZiBlZGFkID49IDE4OgogICAgICAgIHByaW50KGYiRXMgbWF5b3IgZGUgZWRhZCAoe2VkYWR9IGHDsW9zKSIpCiAgICBlbHNlOgogICAgICAgIHByaW50KGYiRXMgbWVub3IgZGUgZWRhZCAoe2VkYWR9IGHDsW9zKSIpCgojIFByb2dyYW1hIHByaW5jaXBhbApkaWFfZm4sIG1lc19mbiwgYW5pb19mbiA9IGxlZXJfZmVjaGFfbmFjaW1pZW50bygpCmVkYWQgPSBjYWxjdWxhcl9lZGFkKGRpYV9mbiwgbWVzX2ZuLCBhbmlvX2ZuKQptb3N0cmFyX3Jlc3VsdGFkbyhlZGFkKQ==