How to create AGE Calculator Web App PyWebIO in Python ? - GeeksforGeeks

17 Jun, 2021
In this article, we are going to create an AGE Calculator that will show your age in years, months, and days with the help of the current date. We will use the PyWebIO module for creating a simple and interactive interface on the web. This is a python module mostly used to create simple and interactive interfaces on the web using Python programming. It can be installed using the below command:
pip install pywebio
Stepwise Implementation:
Step 1: Import all the required modules.
Python3
# Import the following modulesfrom dateutil.relativedelta import relativedeltafrom datetime import datetimefrom time import strptimefrom pywebio.input import *from pywebio.output import *from pywebio.session import *import time
Step 2: Getting current time and taking input from the user.
Python3
# Getting Current time.date = datetime.now().strftime("%d/%m/%Y")    # Taking age from the userDOB = input("", placeholder = "Your Birth Date(dd/mm/yyyy)")
Step 3: Checking whether the format of age is correct or not.
Python3
try:    # Check whether the input age format     # is same as given format    val = strptime(DOB, "%d/%m/%Y")except:        # If format is different, then through     # an error.    put_error("Alert! This is not the right format")    time.sleep(3)  # sleep for 3 seconds    continue
Step 4: Split the Birth Date of the user and the Current Date by ‘/’. And then Typecast all the split parts into the integer. Swap months and years for both the user’s birth date and current date.
Python3
# Split the age by '/'in_date = DOB.split('/')  # split the todays date by '/'date = date.split('/')    # Typecast all the converted part # into the int.in_date = [int(i) for i in in_date] date = [int(i) for i in date] newdate = []    # Swap days with yearsin_date[0], in_date[2] = in_date[2], in_date[0]    # Swap days with yearsdate[0], date[2] = date[2], date[0]
Step 5: Check whether or not the current year is smaller than the User’s D.O.B year. If the current year is smaller than through an error.
Python3
if in_date <= date:        now = datetime.strptime(DOB, "%d/%m/%Y")              # Display output in a pop window        popup("Your Age",k              [put_html("<h4>"f"{relativedelta(datetime.now(),now).years} Years</br> \              {relativedelta(datetime.now(),now).months} Months</br>\              {relativedelta(datetime.now(),now).days} Days""</h4>"), put_buttons(                  ['Close'], onclick=lambda _: close_popup())], implicit_close=True)else:        # If you input the year greater than current year        put_warning(            f"No result found, this is {date[0]}, and you can't be in {in_date[0]}.")
Complete Code:
Python3
# Import the following modulesfrom dateutil.relativedelta import relativedeltafrom datetime import datetimefrom time import strptimefrom pywebio.input import *from pywebio.output import *from pywebio.session import *import time  # Run infinite loopwhile True:      clear()           # Put a heading Age Calculator    put_html("<p align=""left""><h4> AGE CALCULATOR</h4></p>")          # Getting Current time.    date = datetime.now().strftime("%d/%m/%Y")            # Taking age from the user    DOB = input("", placeholder="Your Birth Date(dd/mm/yyyy)")    try:                # Check whether the input age        # format is same as given format        val = strptime(DOB, "%d/%m/%Y")    except:                # If format is different, then through an error.        put_error("Alert! This is not the right format")                  # sleep for 3 seconds        time.sleep(3)          continue    in_date = DOB.split('/')     date = date.split('/')            # Typecast all the converted part into the int.    in_date = [int(i) for i in in_date]    date = [int(i) for i in date]          # Define an empty list    newdate = []            # Swap days with years    in_date[0], in_date[2] = in_date[2], in_date[0]            # Swap days with years    date[0], date[2] = date[2], date[0]      if in_date <= date:        now = datetime.strptime(DOB, "%d/%m/%Y")                  # Display output        popup("Your Age",              [put_html("<h4>"f"{relativedelta(datetime.now(),now).years} Years</br> \              {relativedelta(datetime.now(),now).months} Months</br>\              {relativedelta(datetime.now(),now).days} Days""</h4>"), put_buttons(                  ['Close'], onclick=lambda _: close_popup())], implicit_close=True)    else:                # If you input the year greater than current year        put_warning(            f"No result found, this is {date[0]}, and you can't be in {in_date[0]}.")        time.sleep(3)    clear()    # Give user a choice    choice = radio("Do you want to calculate again?",                   options=['Yes', 'No'], required=True)    if choice.lower() == 'yes':        continue    else:        clear()                  # Show a toast notification        toast("Thanks a lot!")          exit()
Output: 
python-modules
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
How to Install PIP on Windows ?
How to drop one or multiple columns in Pandas Dataframe
How To Convert Python Dictionary To JSON?
Check if element exists in list in Python
Python | Pandas dataframe.groupby()
Defaultdict in Python
Python | Get unique values from a list
Python Classes and Objects
Python | os.path.join() method
Create a directory in Python