Алгоритм Луна работает для всех кредитных карт, кроме карт 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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