WRITE A PYTHON FUNCTION Fall 2016 Credit Card Number Validation: The Lehn check
ID: 3783931 • Letter: W
Question
WRITE A PYTHON FUNCTION
Fall 2016 Credit Card Number Validation: The Lehn check or the Mod 10 check In 1954, Hans Lehn of IBM proposed an algorithm for validating credit card numbers. The algorithm useful to determine whether a card number is entered or scanned correctly. To ensure validity: Write a function called is Valid Credit Card that reads accepts a string and returns True if the string represents a valid credit card number and False if it is invalid. Create a list of sample credit card numbers and call your function, printing the number and a message indicating if the number was valid or not. Here are some ideas about what to test:Explanation / Answer
import sys
def sumeven(cardnumber):
sum=0
l=[]
for i in range(len(cardnumber)-2,-1,-2):
d=2 * int(cardnumber[i])
s=str(d)
if len(s) ==2:
s=int(s[0])+int(s[1])
l.append(s)
else:
l.append(d)
for i in l:
sum=sum+i
return sum
def sumodd(cardnumber):
sum=0
for i in range(len(cardnumber)-1,-1,-2):
sum=sum+int(cardnumber[i])
return sum
def cardname(cardnumber):
if cardnumber[0] =='4':
return 'VISA'
elif cardnumber[0]=='5':
return 'MASTERCARD'
elif cardnumber[0:2]=='37':
return 'AMERICAN EXPRESS'
else:
return 'DISCOVER'
def validity(even,odd):
sum=even+odd
if sum%10 ==0:
return 'VALID'
else:
return 'NOT VALID'
def getcard():
cardno=input('Enter the credit card number ')
if cardno[0].isalpha():
print("DON'T BEGIN WITH ALPHABET")
sys.exit()
if len(cardno)<13:
print('credit card number is too short')
sys.exit()
elif len(cardno)> 16:
print('credit card number is too length')
sys.exit()
else:
return cardno
if __name__=='__main__':
cardno=getcard()
even=sumeven(cardno)
odd=sumodd(cardno)
name=cardname(cardno)
valid=validity(even,odd)
print ('sum of even number %d' % even)
print('sum of odd number %d' % odd)
print('card name is %s' % name)
print('the card is %s' % valid)
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.