This repository has been archived on 2024-10-24. You can view files and clone it, but cannot push or open issues or pull requests.
NG_2022_Stanislav_Mykhailenko/Lesson_3/We know/bank_card.py
2023-01-09 00:01:17 +02:00

43 lines
1 KiB
Python

# Lesson 3 Task K3F9#@%^&?: bank card validation
# Author: Stanislav Mykhailenko
# License: Unlicense
# Return codes:
# 0 - OK
def validateLength(number):
if len(number) < 13 or len(number) > 16 or len(number) == 14:
return False
return True
def validateLuhn(number):
even = False
evenDigits = ""
evenSum = 0
oddSum = 0
for i in reversed(range(len(number))):
if even:
evenDigits += str(int(number[i]) * 2)
else:
oddSum += int(number[i])
even = not even
for i in range(len(evenDigits)):
evenSum += int(evenDigits[i])
if (evenSum + oddSum) % 10 == 0:
return True
return False
number = input("Number: ")
if validateLength(number) and validateLuhn(number):
if len(number) == 13 or len(number) == 16 and number[0] == "4":
print("VISA")
elif len(number) == 16 and number[0] == "5" and int(number[1]) >= 1 and int(number[1]) <= 5:
print("MASTERCARD")
elif len(number) == 15 and number[0] == "3" and number[1] == "4" or number[1] == "7":
print("AMEX")
else:
print("INVALID")
else:
print("INVALID")