для свободного онлайн учебник Python Мне нужно:кредитной карты проверка упражнения питон
написать функцию, которая проверяет, является ли данный номер кредитной карты действителен. Функция
check(S)
должна принимать строкуS
в качестве входных данных. Во-первых, , если строка не соответствует формату"#### #### #### ####"
, где каждый#
является цифрой, то он должен возвращатьFalse
. Затем, если сумма цифры делятся на10
(метод «контрольной суммы»), то процедура должна вернутьTrue
, иначе она должна вернутьFalse
. Например, если является строкой"9384 3495 3297 0123"
, то, хотя формат верен, сумма цифр равна72
, поэтому вы должны вернутьFalse
.
Следующие показывает, что я придумал. Я думаю, что моя логика правильная, но не совсем понимаю, почему она дает мне неправильную ценность. Есть ли структурная проблема в моем коде, или я неправильно использую метод?
def check(S):
if len(S) != 19 and S[4] != '' and S[9] != '' and S[14] != '':
return False # checking if the format is correct
S = S.replace(" ",'') # Taking away spaces in the string
if not S.isdigit():
return False # checking that the string has only numbers
L = []
for i in S:
i = int(i) # Making a list out of the string and converting each character to an integer so that it the list can be summed
L.append(i)
if sum(L)//10 != 0: # checking to see if the sum of the list is divisible by 10
return False
Ваши отступы непоследовательны; можете ли вы исправить это? Ваш код не может быть запущен в его нынешнем виде. –