python信用卡违约_Python信用卡验证

我是一个初级Python学习者,目前正在研究Luhn算法来检查信用卡验证。我写了大部分代码,但是我有两个错误,第一个是赋值前引用num。我得到的第二个是类型为'\io.TextIOWrapper'的对象没有len()。我们将非常感谢您的进一步帮助/指导。

以下是Luhn算法(Mod10 Check)的步骤从右到左每隔两位数。如果这个“翻倍”结果是两位数,则将两位数相加

得到一个数字的数字。

现在将步骤1中的所有单个数字相加。

将信用卡号码中从右到左的奇数位数相加。

将步骤2和步骤3的结果相加。

如果步骤4的结果可被10整除,则卡号有效;否则无效。

我的输出应该是Card Number Valid / Invalid

--------------------------------------

3710293 Invalid

5190990281925290 Invalid

3716820019271998 Valid

37168200192719989 Invalid

8102966371298364 Invalid

6823119834248189 Valid

这是密码。def checkSecondDigits(num):

length = len(num)

sum = 0

for i in range(length-2,-1,-2):

number = eval(num[i])

number = number * 2

if number > 9:

strNumber = str(number)

number = eval(strNumber[0]) + eval(strNumber[1])

sum += number

return sum

def odd_digits(num):

length = len(num)

sumOdd = 0

for i in range(length-1,-1,-2):

num += eval(num[i])

return sumOdd

def c_length(num):

length = len(num)

if num >= 13 and num <= 16:

if num [0] == "4" or num [0] == "5" or num [0] == "6" or (num [0] == "3" and num [1] == "7"):

return True

else:

return False

def main():

filename = input("What is the name of your input file? ")

infile= open(filename,"r")

cc = (infile.readline().strip())

print(format("Card Number", "20s"), ("Valid / Invalid"))

print("------------------------------------")

while cc!= "EXIT":

even = checkSecondDigits(num)

odd = odd_digits(num)

c_len = c_length(num)

tot = even + odd

if c_len == True and tot % 10 == 0:

print(format(cc, "20s"), format("Valid", "20s"))

else:

print(format(cc, "20s"), format("Invalid", "20s"))

num = (infile.readline().strip())

main()

你可能感兴趣的:(python信用卡违约)