-1

尝试计算校验位并将其添加到生成的信用卡的末尾。所以我想将两个整数连接成一个字符串。问题是这段代码会生成一个数字列表而不是数字本身。

checkDigit = 0
while checksum % 10 != 0:
    checksum += 1
    checkDigit += 1
    cc_number = str(cc_number) + str(checkDigit)
return cc_number

所以在这里我试图计算我需要添加到校验和中的数字,以便生成符合 Luhn 算法要求的信用卡。我期望得到数字“5”,但我得到了一个包含 5 个元素的列表,例如“123456”。然后它被连接到第一个数字的末尾......这是为什么呢?我想得到例如: 2222222225 而不是 222222222123456

4

2 回答 2

1

不缩进cc_number = str(cc_number) + str(checkDigit)。一旦您确定了正确的 checkDigit,听起来您只想在循环结束时“附加”str(checkDigit)。(我说“追加”是因为字符串在 python 中是不可变的。)

于 2019-10-31T19:46:48.423 回答
0
checkDigit = 0
while checksum % 10 != 0:
    checksum += 1
    checkDigit += 1
return "{}{}".format(cc_number, checkDigit)

您不想连接循环checkDigit内部。while我使用字符串格式将它放在返回语句中。

于 2019-10-31T19:55:44.977 回答