import gradio as gr def check_credit_card(card_number: str): card_number = card_number.replace(" ", "") # remove spaces if not card_number.isdigit(): # check if the input is numeric return "Invalid input. Please enter a numeric credit card number." card_number = int(card_number) # convert card number to string to easily calculate its length card_number_str = str(card_number) digit = len(card_number_str) # check if the card number has a valid length if digit != 13 and digit != 16 and digit != 15: return "INVALID" # split the card number into individual digits and store them in a list number = [int(x) for x in card_number_str[::-1]] original_number = number.copy() # create a copy of the number list # apply Luhn's algorithm for i in range(1, digit, 2): original_number[i] *= 2 # sum the digits of the numbers in original_number v = sum(sum(divmod(x, 10)) for x in original_number) # check if the card is a Visa, MasterCard, or American Express card if digit == 13: if number[-1] == 4 and v % 10 == 0: return "VISA" elif digit == 15: if number[-1] == 3 and v % 10 == 0 and number[-2] in [4, 7]: return "AMEX" elif digit == 16: if number[-1] == 4 and v % 10 == 0: return "VISA" elif number[-1] == 5 and v % 10 == 0 and number[-2] in [1, 2, 3, 4, 5]: return "MASTERCARD" return "INVALID" iface = gr.Interface(fn=check_credit_card, inputs=gr.inputs.Textbox(label="Credit Card Number"), outputs="text", layout="vertical", title="Arasy's credit/debit card checker" ) iface.launch()