Untitled

 avatar
unknown
python
a year ago
1.9 kB
9
Indexable
import re


def main():
    number = get_number()
    number_list = [int(x) for x in str(number)]
    number_string = str(number)
    card_type = ""

    if validate_number(number_list):
        if re.search("^34|37", number_string) and len(number_string) == 15:
            card_type = "AMEX"
            print(card_type)
        elif re.search("^4", number_string):
            if len(number_string) == 13 or len(number_string) == 16:
                card_type = "VISA"
                print(card_type)
            else:
                print("INVALID")
        elif re.search("^51|52|53|54|55", number_string) and len(number_string) == 16:
            card_type = "MASTERCARD"
            print(card_type)
        else:
            print("INVALID")
    else:
        print("INVALID")


def get_number():
    while True:
        try:
            number = int(input("Number: "))
        except TypeError:
            print("Invalid input")
        else:
            return number


def validate_number(l):
    sum = 0
    position = len(l)

    if position % 2 != 0:
        for n in range(position):
            if n % 2 == 0:
                sum += l[n]
            else:
                l[n] *= 2
                if l[n] > 9:
                    separated_digits = [int(x) for x in str(l[n])]
                    sum += separated_digits[0] + separated_digits[1]
                else:
                    sum += l[n]
    else:
        for n in range(position):
            if n % 2 == 0:
                l[n] *= 2
                if l[n] > 9:
                    separated_digits = [int(x) for x in str(l[n])]
                    sum += separated_digits[0] + separated_digits[1]
                else:
                    sum += l[n]
            else:
                sum += l[n]

    if sum % 10 == 0:
        return True
    else:
        return False


main()
Editor is loading...