Chapter 7 Input Validation Starting Out with Programming

  • Slides: 12
Download presentation
Chapter 7: Input Validation Starting Out with Programming Logic & Design Second Edition by

Chapter 7: Input Validation Starting Out with Programming Logic & Design Second Edition by Tony Gaddis Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

Chapter Topics 7. 1 Garbage In, Garbage Out 7. 2 The Input Validation Loop

Chapter Topics 7. 1 Garbage In, Garbage Out 7. 2 The Input Validation Loop 7. 3 Defensive Programming Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 -2

7. 1 Garbage In, Garbage Out If a program reads bad data as input,

7. 1 Garbage In, Garbage Out If a program reads bad data as input, it will produce bad data as output – Programs should be designed to accept only good data – Input Validation • All input should be inspected before processing • If it’s invalid, it should be rejected and the user should be prompted to enter the correct data Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 -3

7. 1 Garbage In, Garbage Out Copyright © 2010 Pearson Education, Inc. Publishing as

7. 1 Garbage In, Garbage Out Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 -4

7. 2 The Input Validation Loop Input validation is commonly done with a loop

7. 2 The Input Validation Loop Input validation is commonly done with a loop that iterates as long as input is bad Figure 7 -1 Logic containing an input validation loop Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 -5

7. 2 The Input Validation Loop Python example: another = 'y' # Process one

7. 2 The Input Validation Loop Python example: another = 'y' # Process one or more items. while another == 'y' or another == 'Y': print "AGAIN" # Do this again? another = raw_input('Do you have another item? ' + '(Enter y for yes): ') Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 -6

7. 2 The Input Validation Loop Priming read is the first input to be

7. 2 The Input Validation Loop Priming read is the first input to be tested // Get a test result Display “Enter a test score. ” Input score //Make sure it is not lower than 0. While score < 0 OR score > 100 Display “ERROR: The score cannot be less than 0 ” Display “or greater than 100. ” Display “The the correct score. ” Input score End While Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 -7

7. 2 The Input Validation Loop Priming read is the first input to be

7. 2 The Input Validation Loop Priming read is the first input to be tested Python example: #Get a test result score = int(raw_input("Enter a test score: ")) #Make sure it is not lower than 0. while score < 0 or score > 100: print "ERROR: The score cannot be less than 0" print "or greater than 100" score = int(raw_input("Enter a test score: ")) Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 -8

7. 2 The Input Validation Loop Writing Validation Functions – For complex validation, it

7. 2 The Input Validation Loop Writing Validation Functions – For complex validation, it is recommended to write a function. – This process can make the code look cleaner Validating String Input – Some strings must be validated such as those programs that ask for a specific string input like “yes” – Or programs that specify a string to be a specific length like password validation Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 -9

7. 3 Defensive Programming Input validation is defensive programming – The practice of anticipating

7. 3 Defensive Programming Input validation is defensive programming – The practice of anticipating both obvious and unobvious errors that can happen Types of errors to consider – Empty input, where a user accidentally hits enter before entering data – The user enters the wrong type of data Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 -10

7. 3 Defensive Programming Common errors to be aware of – State abbreviations should

7. 3 Defensive Programming Common errors to be aware of – State abbreviations should be 2 -character strings – Zip codes should be in the proper format of 5 or 9 digits – Hourly wages and salary amounts should be numeric values and within ranges – Dates should be checked – Time measurements should be checked – Check for reasonable numbers Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 -11

# Global constants BASE_HOURS = 40 # Base hours per week OT_MULTIPLIER = 1.

# Global constants BASE_HOURS = 40 # Base hours per week OT_MULTIPLIER = 1. 5 # Overtime multiplier def main(): hours_worked = int(raw_input("Enter number of hours worked: ")) # Get the hours worked and the hourly pay rate. pay_rate = float(raw_input('Enter the hourly pay rate: ')) # Calculate and display the gross pay. if hours_worked > BASE_HOURS: calc_pay_with_OT(hours_worked, pay_rate) else: calc_regular_pay(hours_worked, pay_rate) # The calc_pay_with_OT function calculates pay with # overtime. It accepts the hours worked and the hourly # pay rate as arguments. The gross pay is displayed. def calc_pay_with_OT(hours, rate): # Calculate the number of overtime hours worked. overtime_hours = hours - BASE_HOURS #Calculate the amount of overtime pay. overtime_pay = overtime_hours * rate * OT_MULTIPLIER #Calculate the gross pay. gross_pay = BASE_HOURS * rate + overtime_pay # Display the gross pay. print 'The gross pay is $%. 2 f. ' % gross_pay # The calc_regular_pay function calculates pay with no overtime. It accepts the hours worked and the hourly # pay rate as arguments. The gross pay is displayed. def calc_regular_pay(hours, rate): # Calculate the gross pay. gross_pay = hours * rate # Display the gross pay. print 'The gross pay is $%. 2 f. ' % gross_pay # Call the main function. main() Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 -12