Python Programming: An Introduction to Computer Science
Python Programming: An Introduction to Computer Science
3rd Edition
ISBN: 9781590282779
Author: John Zelle
Publisher: Franklin Beedle & Associates
bartleby

Concept explainers

Question
Book Icon
Chapter 7, Problem 18PE
Expert Solution & Answer
Check Mark
Program Plan Intro

Validation of date input

Program plan:

  • Define the “leap_Year()” function,
    • Check whether the year is not divisible by "4",
      • If the condition is “True”, return “False”.
      • Otherwise, check whether the year is divisible by "100",
        • If it is “True”, check whether the year is divisible by "400",
          • If it is “True”, return “True”.
          • Otherwise, return “False”.
        • Otherwise, return “True”.
  • Define the “main()” function,
    • Execute the “try” statement to raise the exception if it is occurred.
      • Get the input from the user.
      • Split the user input based on "/" using “split()”.
      • Convert the string type inputs into integer type.
      • Check whether either the month is greater than “12” or day is greater than “12”,
        • If it is “True”, print the string “This date is invalid”
        • Otherwise, check whether the day is less than or equal to “28”,
          • If it is “True”, print the string as “This date is valid”.
          • Otherwise, check whether the month is "2" and "29",
            • If it is “True”, check whether the Boolean value return from “leap_Year()” is “False”.
              • If it is “True”, print “This date is invalid”.
              • Otherwise, print “This date is valid”.
            • Otherwise, check whether the day is “31”,
              • If it “True”, check whether the month is either "2" or "4" or "6" or "11",
              • If the above condition is “True”, print invalid.
              • Otherwise, print valid.
            • Otherwise, print “This date is valid”.
          • Catch the exception using “except ValueError” statement, if the exception of type “ValueError” occurs.
        • Handle the exception.
      • Catch the exception using “except” statement, if any type of exception occurs.
    • Call the function “main()”.
Program Description Answer

This Python program is to add decisions and exception handling as required making it truly robust.

Explanation of Solution

Program:

File name: “year.py”

#Define the function

def leap_Year(yr):

    #Check whether the year is not divisible by "4"

    if (yr % 4) != 0:

        #Return the boolean value

        return False

    #Otherwise

    else:

        #Check whether the year is divisible by "100"

        if (yr % 100) == 0:

            #Check whether the year is divisible by "400"

            if (yr % 400) ==0:

                #Return boolean value

                return True

            #Otherwise

            else:

                #Return boolean value

                return False

        #Otherwise

        else:

            #Return boolean value

            return True

#Define the function

def main():

    #Make a try

    try:

        #Get the input from the user

        date_Str = input("Enter a date in the form MM/DD/YYYY: ")

        #Split the user input based on "/" using split()

        month_Str, day_Str, year_Str = date_Str.split("/")

        #Convert the string into integer

        mon = int(month_Str)

        #Convert the string into integer

        d = int(day_Str)

        #Convert the string into integer

        yr = int(year_Str)

        #Execute the condition

        if mon > 12 or d > 31:

            #Print the string

            print("This date is invalid.")

        #Otherwise

        else:

            #Check whether the day is less than or equal to 28

            if d <= 28:

                #Print the string

                print("This date is valid.")

            #Check whether the month is "2" and "29"

            elif mon == 2 and d == 29:

                #Check whether the boolean value return from "leap_Year()" is "False"

                if leap_Year(yr) == False:

                    #Print the string

                    print("This date is invalid.")

                #Otherwise

                else:

                    #Print the string

                    print("This date is valid.")

            #Check whether the day is "31"

            elif d == 31:

                '''Check whether the month is either "2" or "4" or "6" or "11"'''

                if mon == 2 or 4 or 6 or 11:

                    #Print the string

                    print("This date is invalid")

                #Otherwise

                else:

                    #Print the string

                    print("This date is valid")

            #Otherwise

            else:

                #Print the string

                print("The date is valid.")

    #Catch the exception

    except ValueError:

        #Handle the exception

        print("Your input was not in the correct form.")

    #Catch the exception

    except:

        #Handle the exception

        print("Something went wrong!")

#Call the function

main()

Sample Output

Output:

Enter a date in the form MM/DD/YYYY: 02/30/2000

The date is valid.

>>>

Additional output:

Enter a date in the form MM/DD/YYYY: 02-05-2000

Your input was not in the correct form.

>>>

Additional output:

Enter a date in the form MM/DD/YYYY: 06/31/2000

This date is invalid

>>>

Want to see more full solutions like this?

Subscribe now to access step-by-step solutions to millions of textbook problems written by subject matter experts!
Students have asked these similar questions
CPS 2390 Extra Credit Assignment For each problem, choose the best answer and explain how you arrived at your answer. (15 points each.) 1.If control is redirected to location x4444 after the execution of the following instructions, what should have been the relationship between R1 and R2 before these instructions were executed? Address Instruction x4400 1001100010111111 x4401 0001100100100001 x4402 0001100001000100 x4403 0000100001000000 A. R1 R2 (R1 was greater than R2) B. R1 R2 (R2 was greater than R1) C. R1 R2 (R1 and R2 were equal) = D. Cannot be determined with the given information. 2. If the value stored in RO is 5 at the end of the execution of the following instructions, what can be inferred about R5? Address x3000 Instruction 0101000000100000 x3001 0101111111100000 x3002 0001110111100001 x3003 0101100101000110 x3004 0000010000000001 x3005 0001000000100001 x3006 0001110110000110 x3007 0001111111100001 x3008 0001001111111000 x3009 0000100111111000 x300A 0101111111100000 A. The…
Need help writing code to answer this question in Python! (image attached)
Need help with python code! How do I simplify my code for a beginner to understand, simple fixed format and centering? Such as:  print(f"As an int variable: {age_int:^7}") print(f"In numeric binary: {age_int:^7b}") My Code:name = input("Enter your name: ")print(f"In text name is: {' '.join(name)}")decimal_values = []binary_values = []for letter in name:   ascii_val = ord(letter)   binary_val = format(ascii_val, '08b')   decimal_values.append(str(ascii_val))   binary_values.append(binary_val)# Loop through each letter:print(f"In ASCII decimal: {' '.join(decimal_values)}")print(f"In ASCII binary: {' '.join(binary_values)}")# Ageage_str = input("Enter your age: ")age_int = int(age_str)print(f"As a string \"{age_str}\": {' '.join(age_str)}")age_decimal_values = []age_binary_values = []for digit in age_str:   ascii_val = ord(digit)   binary_val = format(ascii_val, '07b')   age_decimal_values.append(str(ascii_val))   age_binary_values.append(binary_val)print(f"In ASCII decimal: {'…
Knowledge Booster
Background pattern image
Computer Science
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
SEE MORE QUESTIONS
Recommended textbooks for you
Text book image
Programming Logic & Design Comprehensive
Computer Science
ISBN:9781337669405
Author:FARRELL
Publisher:Cengage
Text book image
C++ Programming: From Problem Analysis to Program...
Computer Science
ISBN:9781337102087
Author:D. S. Malik
Publisher:Cengage Learning
Text book image
EBK JAVA PROGRAMMING
Computer Science
ISBN:9781337671385
Author:FARRELL
Publisher:CENGAGE LEARNING - CONSIGNMENT
Text book image
Microsoft Visual C#
Computer Science
ISBN:9781337102100
Author:Joyce, Farrell.
Publisher:Cengage Learning,
Text book image
C++ for Engineers and Scientists
Computer Science
ISBN:9781133187844
Author:Bronson, Gary J.
Publisher:Course Technology Ptr
Text book image
CMPTR
Computer Science
ISBN:9781337681872
Author:PINARD
Publisher:Cengage