In this program you will test whether a given 15 or 16-digit credit card number is valid or not. Here are the steps in your program:
Enter 15 or 16-digit credit card number: 123456789876 Not a 15 or 16-digit number
Enter 15 or 16-digit credit card number: 12345678123456780 Not a 15 or 16-digit number
Enter 15 or 16-digit credit card number: 1234567891234567 Invalid credit card number
Enter 15 or 16-digit credit card number: 4222222222222220 Valid Visa credit card number
Luhn's Test: Let us say that the credit card number was made
of the following digits:
d15 d14 d13 d12 d11 d10 d9 d8 d7 d6 d5 d4 d3 d2 d1 d0
The last digit d0 is the check digit in the Luhn's algorithm.
The algorithm goes as follows:
Here are two examples worked out - one is a valid credit card number and the other is an invalid credit card number.
d15 | d14 | d13 | d12 | d11 | d10 | d9 | d8 | d7 | d6 | d5 | d4 | d3 | d2 | d1 | d0 |
4 | 4 | 3 | 2 | 3 | 3 | 3 | 8 | 8 | 4 | 1 | 3 | 8 | 3 | 4 | 3 |
8 | 6 | 6 | 6 | 16 | 2 | 16 | 8 | ||||||||
8 | 6 | 6 | 6 | 7 | 2 | 7 | 8 | ||||||||
8 | 4 | 6 | 2 | 6 | 3 | 6 | 8 | 7 | 4 | 2 | 3 | 7 | 3 | 8 | 3 |
The sum of the digits is 80. It is divisible by 10 and hence the credit card number is valid.
d15 | d14 | d13 | d12 | d11 | d10 | d9 | d8 | d7 | d6 | d5 | d4 | d3 | d2 | d1 | d0 |
8 | 2 | 7 | 3 | 1 | 2 | 3 | 2 | 7 | 3 | 5 | 1 | 0 | 5 | 6 | 9 |
16 | 14 | 2 | 6 | 14 | 10 | 0 | 12 | ||||||||
7 | 5 | 2 | 6 | 5 | 1 | 0 | 3 | ||||||||
7 | 2 | 5 | 3 | 2 | 2 | 6 | 2 | 5 | 3 | 1 | 1 | 0 | 5 | 3 | 9 |
The sum of the digits is 56. It is not divisible by 10 and hence the credit card number is invalid.
To obtain the last digit of a number use the modulo (%) operator. To remove the last digit of a number divide by 10. Here is a piece of code that shows how to obtain the last two digits of the credit card number.
creditCard = eval (input ('Enter 15 or 16-digit credit card number:')) d0 = creditCard % 10 creditCard = creditCard // 10 d1 = creditCard % 10
The first digit of a credit card is known as the Major Industry Identifier (MII).
The program that you will be writing will be called CreditCard. You must use functions in your program. You can write more functions than we have asked for. At a minimum it should have the following structure:
# This function checks if a credit card number is valid def is_valid (cc_num): # This function returns the type of credit card def cc_type (cc_num): def main (): main() }
We will be looking at good documentation, and adherence to the coding convention discussed in class. Your file CreditCard.py will have the following header:
# File: CreditCard.py # Description: # Student Name: # Student UT EID: # Course Name: CS 303E # Unique Number: # Date Created: # Date Last Modified:
Use the Canvas program to submit your CreditCard.py file. We should receive your work by 11 PM on Friday, 07 Apr 2017. There will be substantial penalties if you do not adhere to the guidelines.