In: Computer Science
The last digit of a credit card number is the check digit, which protects against transcription errors such as an error in a single digit or switching two digits. The following method is used to verify actual credit card numbers but, for simplicity, we will describe it for numbers with 8 digits instead of 16:
1.) Starting from the rightmost digit, form the sum of every other digit. For example, if the credit card number is 4358 9795, then you form the sum 5 + 7 + 8 + 3 = 23.
2.) Double each of the digits that were not included in the preceeding step. Add all digits of the resulting numbers. For example, with the numbers given above, doubling the digits, starting with the next to last one, yields 18 18 10 8. Adding all digits in these values yields 1 + 8 + 1 + 8 + 1 + 0 + 8 = 27.
3.) Add the sums of the two preceding steps. If the last digit of the result is 0, the number is invalid. In our case, 23 + 27 = 50, so the number is valid.
- IN PYTHON, write a program that implements this algorithm. The user should supply an 8 digit number, and you should print out whether the number is valid or not. If it is not valid, you should print the value of the check digit that would make it valid.
n=int(input("Enter Credit card Number")) #Reading credit card
from user and converting as integer
i=1#variable to identify the odd or even position for calculating
sum accordingly
sum1=0#Variable to store the sum Starting from the rightmost digit,
form the sum of every other digit.
sum2=0#Variable to store the sum of second step (2.) Double each of
the digits that were not included in the preceeding step. Add all
digits of the resulting numbers.)
#Loop to find the sum of digits
x=n
while(n>0):
d=n%10#taking the rightmost digit
#print(d)
#if the digit is at odd postion simply add it with previous sum
else double the digit and add each digit with sum
if(i%2==1):
sum1=sum1+d
else :
p=2*d
while(p>0):
sum2=sum2+(p%10)
p=int(p/10)
n=int(n/10)#consider the number after removing the rightmost digit
which already processd for the next iteration
i=i+1#to identify the odd or even position
print(sum1)#printing first sum
print(sum2)#printing second sum
sum3=sum1+sum2
print(sum3)#printing third sum
# Add the sums of the two preceding steps. If the last digit of the
result is 0,
#the number is invalid.
#Taking last digit and checking whether it is zero
if(sum3%10==0):
print("The number is invalid")
print("The number can be valid if check digit is")
print((x%10)+1)#just incrementing the last digit of the number by
one
else:
print ("Number is valid")
In question it is mentioned that
3.) Add the sums of the two preceding steps. If the last digit of the result is 0, the number is invalid. In our case, 23 + 27 = 50, so the number is valid
The last digit of 50 is 0 then in program it is considered as invalid
Let me know if any thing wrong
using python 3.6.5