Это домашнее задание, над которым я работал, чтобы вычислить, действительно ли номер кредитной карты. Он имеет много шагов и использует две другие вспомогательные функции.Проверьте действительный номер кредитной карты, используя python
Первая вспомогательная функция делает список, состоящий из каждой цифры в п:
def intToList(n):
strr = [num for num in str(n)]
theList = list(map(int, strr))
return theList
Вторая вспомогательная функция добавляет сумму цифр в числе. Например:
def addDigits(n):
sums = 0
while n:
if n > 0:
sums += n % 10
n //= 10
else:
return
return sums
>>>(332) #(3+3+2) = 7
>>> 7
Таким образом, функция, над которой я работаю, - это подтвердить 16-значный номер кредитной карты. Он имеет конкретные приказы следовать в указанном порядке.
- Проверяет, что он содержит только цифры. #Готово.
- Проверяет, что это 16 цифр. #Готово.
- Если n - это строка, она преобразует ее в целое число.
- создает список, используя функцию intToList (n).
- Умножает нечетные индексы списка, сделанные intToList (n) на 2, и любые продукты, которые производят двузначные числа, заменяются суммой цифр, используя функцию addDigits (n).
- Вычисляет сумму всех одиночных цифр в списке, сделанных моим intToList (n). Если сумма равна 0 по модулю 10, исходное значение n является действительным номером кредитной карты.
Как прямо сейчас у меня есть это:
def checkCreditCard(n):
#Suppose to convert n to int.
n = int(n)
#Helper function 1 to make a list.
myList = intToList(n)
#For loop to apply the math to each odd indices.*
for ele in myList:
if ele % 2 == 1:
ele *= 2
if ele >= 10:
single = addDigits(?) #not sure what to put I've tried everything
if sum(myList) % 10 == 0:
return True
return False
Вот мой вопрос, я не уверен, куда идти отсюда. Я уверен, что приведенный выше код правилен до сих пор, но я не знаю, как сделать продукты, которые производят двузначные числа, вычислять на одиночные цифры, используя мою функцию, и вычисляет сумму всех одиночных цифр в списке.
Любая помощь была бы принята с благодарностью. Дай мне знать, смогу ли я что-нибудь прояснить.
добавил, с чем я работал.
Проблема в том, что я должен использовать вспомогательную функцию addDigits (n), чтобы сделать любые возможные двузначные значения в одноразрядное значение. например, 8 * 2 = 16 после того, как функция addDigits (n) пройдет через нее, она должна взять 16 и сделать ее 7. – thatoneguy
@thatoneguy: Yup. Это ярлык, чтобы избежать необходимости добавлять цифры. Если у вас есть 16, вычитание 9 дает вам 7 (сумма 1 и 6).17 - 9 = 8 (сумма 1 и 7) и т. Д. – ShadowRanger
В качестве части задания я должен использовать вспомогательную функцию. Я хотел бы использовать ярлык, но мое задание требует, чтобы я использовал функцию. – thatoneguy