Алгоритм Луна работает для всех кредитных карт, кроме карт AMEX (Python3) (cs50/pset6/credit). ⇐ Python

Программы на Python
Anonymous
Алгоритм Луна работает для всех кредитных карт, кроме карт AMEX (Python3) (cs50/pset6/credit).

Сообщение Anonymous »

Я пытаюсь создать программу, которая проверяет, является ли введенный пользователем номер кредитной карты недействительным или принадлежит ли он AMEX, MASTERCARD или VISA. Я использую формулу Луна. Вот сайт, на котором есть объяснение формулы, которую я использую: https://www.geeksforgeeks.org/luhn-algorithm/
Он работает со всеми номерами кредитных карт, кроме кредитных карт AMEX. Может ли кто-нибудь мне помочь?
Вот мой код:

Код: Выделить всё

number = input("Number: ")
valid = False
sumOfOdd = 0
sumOfEven = 0

def validation(credit_num):
global sumOfOdd
global sumOfEven
position = 0
for i in credit_num:
if position % 2 != 0:
sumOfOdd += int(i)
else:
product_greater = str(int(i) * 2)
if len(product_greater) > 1:
sumOfEven += (int(product_greater[0]) + int(product_greater[1]))
else:
sumOfEven += int(product_greater)
position += 1

def main():
if (sumOfOdd + sumOfEven) % 10 == 0:
if number[0] == "3":
print("AMEX")
elif number[0] == "5":
print("MASTERCARD")
else:
print("VISA")

else:
print("INVALID")

print(f"{sumOfOdd + sumOfEven}")
validation(number)
main()
Вот номера некоторых кредитных карт:
VISA: 4111111111111111
MASTERCARD: 55555555555554444
AMEX: 371449635398431
Я нашел много разных способов расчета этой формулы, но я не уверен, что это правильно.

Подробнее здесь: https://stackoverflow.com/questions/627 ... ython3-cs5

Вернуться в «Python»