def luhn_check(card_number): """Perform Luhn algorithm check""" def digits_of(n): return [int(d) for d in str(n)] digits = digits_of(card_number) odd_digits = digits[-1::-2] even_digits = digits[-2::-2] checksum = sum(odd_digits) for d in even_digits: checksum += sum(divmod(2 * d, 10)) return checksum % 10 == 0
def cc_checker(card_number): """Perform CC check""" if not isinstance(card_number, int) and not card_number.isdigit(): return False, 'Invalid card number' card_number = int(card_number) if not luhn_check(card_number): return False, 'Luhn check failed' card_type = get_card_type(card_number) card_length = len(str(card_number)) if card_type == 'Unknown': return False, 'Unknown card type' if card_length < 13 or card_length > 16: return False, 'Invalid card length' return True, f'card_type - Valid' cc checker script
import re
def get_card_type(card_number): """Identify card type""" card_types = 65'), 'JCB': re.compile(r'^(2131 for card_type, regex in card_types.items(): if regex.match(str(card_number)): return card_type return 'Unknown' int) and not card_number.isdigit(): return False