Python: Проверить цифры кредитной карты - PullRequest
0 голосов

Мне нужно реализовать функцию под названием «verify», которая принимает единственный параметр под названием «number», а затем проверяет следующие правила:

  1. Первый di git должен быть 4.
  2. Четвертый di git должен быть на единицу больше пятой цифры; имейте в виду, что они разделены da sh, поскольку формат следующий: #### - #### - ####.
  3. Сумма всех цифр должна делиться на 4 без остатка.
  4. Если вы обрабатываете первые две цифры как число с двумя ди git, а седьмую и восьмую цифры как с двумя git цифрами, их сумма должна быть 100

Это то, что я придумал до сих пор:

def verify(number): # do not change this line!

  list_number=list(number.split(''))
  Check=false

# write your code here so that it verifies the card number

    if list_number[0]==4:
    if list_number[3]==list_number[5]+1:
    if list_number.sum() % 4==0:
    if int(str(list_number[0])+str(list_number[1]))+int(str(list_number[7])+str(list_number[8])) ==100:

    Check = true

    else:
    check = false

input = "4094-3460-2754" # change this as you test your function
output = verify(input) # invoke the method using a test input
print(output) # prints the output

Ответы [ 3 ]

1 голос
/ 28 мая 2020

это то, что вам нужно. каждый оператор if в функции соответствует указанному вами условию.

def verify(number):  # do not change this line!
    number_string = number.replace("-", "")
    list_number = [int(n) for n in number_string]

    if not list_number[0] == 4:
        return False

    if not list_number[3] - list_number[4] == 1:
        return False

    if not sum(list_number) % 4 == 0:
        return False

    if not int(number_string[0:2]) + int(number_string[6:8]) == 100:
        return False

    return True


input = "4094-3460-2754"
output = verify(input)
print(output)
# True


0 голосов
/ 28 мая 2020

Похоже, в вашем коде есть несколько фундаментальных ошибок. Я перечислю их для вас:

  1. Логические значения начинаются с заглавной

  2. после операторов if и else нет отступов

  3. Ваш вывод всегда не будет печатать ничего, поскольку ваша функция ничего не возвращает.

def verify(number):
    list_number=list(number)
    if list_number[0]==4 and list_number[3]==list_number[5]+1 and list_number.sum() % 4==0 and int(str(list_number[0])+str(list_number[1]))+int(str(list_number[7])+str(list_number[8])) ==100:
        return True
     else:
        return False
input = "4094-3460-2754"
output = verify(input) 
print(output)```


0 голосов
/ 28 мая 2020

Ваш код плохо написан

list_number = "4094-3460-2754"
list_number = list_number.replace('-','')

if list_number[0]=='4' and int(list_number[3])==int(list_number[5])+1 and list_number.sum() % 4==0 and int(list_number[0])+int(list_number[1])==int(list_number[7])+int(list_number[8]):
    check = True
else:
    check = False
...