所以基本上,我需要寫的LUHN算法的代碼,但我需要有至少5個功能需要幫助的代碼,所有的結果都回來了假,當2應該是真實的
我已經寫一個代碼來做到這一點,但我收到他們應該是真實的假結果。例如,我知道數據文件中的第二個和第四個數據片段對於此算法是正確的,但是我的所有輸出都是錯誤的。你能幫我弄清楚我出錯的地方嗎?
這是代碼:
def CheckLength(numb):
if len(numb)>12 and len(numb)<17:
return True
else:
return False
def CheckType(numb):
if numb[0]=='4':
return 'Visa'
elif numb[0]=='5':
return 'MasterCard'
elif numb[0]=='6':
return 'Discover'
elif numb[0:2]=='37':
return 'American Express'
else:
return 'Invalid Entry'
def Step1(numb):
total1=0
total2=0
length=len(numb)
for i in range(length-2,-1,-2):
double=eval(numb[i])*2
if double>9:
doublex=str(double)
doubleY=int(doublex[0])+int(doublex[1])
total1+=doubleY
else:
total2+=double
total=total1+total2
return total
def Step2(numb):
total=0
length=len(numb)
for i in range(length-1,-2,-2):
total+=i
return total
def Step3(num1,num2):
total=num1+num2
if total%10==0:
return True
else:
return False
def main():
inFile=open('pa7.cards','r')
cardNum=inFile.readline().strip()
while cardNum!='99999':
step1=Step1(cardNum)
step2=Step2(cardNum)
step3=Step3(step1,step2)
print(step1)
print(step2)
print(step3)
cardNum=inFile.readline().strip()
inFile.close()
main()
這是數據文件:
4388576018402626
4388576018410707
37271983
5190828258102121
99999
這是打印所有3個步驟
4
63
False
0
63
False
7
15
False
4
63
False
'麻木了[0:1]'只給出了一個字符 - 它必須是'麻木[0 :2]' – furas
哦,謝謝注意到,但輸出仍然都是錯誤的step3 – 52655841856
添加更多'print()'看看你在變量中有什麼值 – furas