gpt4 book ai didi

python - 卢恩斯算法

转载 作者:太空宇宙 更新时间:2023-11-03 11:22:30 24 4
gpt4 key购买 nike

嘿,我正在为学校作业做 Luhn 算法。

一些输出是正确的;但是,有些不是。

0004222222222222 总共给了我 44

0378282246310005 总共给了我 48

举几个例子。

我知道我的代码不是最干净的,因为我是新手,但如果有人能找出我的错误在哪里,我将非常感激

这是我的代码:

cardNumber = input( "What is your card number? ")
digit = len(cardNumber)
value = 0
total = 0
while ( len( cardNumber ) == 16 and digit > 0):
# HANDLE even digit positions
if ( digit % 2 == 0 ):
value = ( int( cardNumber[digit - 1]) * 2 )
if( value > 9 ):
double = str( value )
value = int( double[:1] ) + int( double[-1] )
total = total + value
value = 0
digit = digit - 1
else:
total = total + value
value = 0
digit = digit - 1
# HANDLE odd digit positions
elif ( digit % 2 != 0):
total = total + int( cardNumber[digit - 1] )
digit = digit - 1

最佳答案

你几乎做对了。只有最后一位数字(或从后面开始的第一个数字)对于您的 16 位数字卡应该被视为奇数。所以你应该设置:

digit = len(cardNumber) - 1

然后您的while 条件应该停止在>= 0(包括第零项);请注意 len( cardNumber ) == 16 是多余的,因为卡片的长度是常数:

while digit >= 0:

最后,您的信用卡号索引将不再需要负 1:

value = int(cardNumber[digit]) * 2
...
...
total = total + int(cardNumber[digit])

关于python - 卢恩斯算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40075829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com