from cs50 import get_int, get_string
#Asking User For Credit Card Number
def main():
while True:
Credit_Card = str(get_int("Enter Credit Card Number: "))
if Credit_Card != "":
break
cardCheck(cardSum, Credit_Card)
def cardSum(Credit_Card):
even = 0
odd = 0
CC = len(Credit_Card)
if (CC == 0):
return 0
else:
if (CC % 2 == 0):
last = int(Credit_Card[-1])
even += last
return even + cardSum(Credit_Card[:-1])
else:
last = int(Credit_Card[-1])
last = last * 2
oddDigits = last // 10 + last % 10
odd += oddDigits
return odd + cardSum(Credit_Card[:-1])
#Checking is card valid or not
def cardCheck(cardSum,Credit_Card):
Total = cardSum(Credit_Card)
if (Total % 10 == 0):
if (len(Credit_Card) == 15) and (int(Credit_Card[0:2]) in [37, 34]):
print("AMEX")
elif (len(Credit_Card) == 16) and (int(Credit_Card[:2]) in range(50, 56)):
print("MASTER CARD")
elif (len(Credit_Card) in [13, 16]) and (int(Credit_Card[:1]) == 4):
print("VISA")
else:
print("INVALID")
else:
print("INVALID")
if __name__ == "__main__":
main()
我无法弄清楚为什么我的程序没有使用这些AMEX 卡号提供正确的输出:378282246310005,371449635398431在我的 C 实现的积分中,这两张卡显示 AMEX 但在 python 中它显示 INVALID 作为输出它工作正常对于 Master,Visa
HUX布斯
相关分类