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