Python实现16位贷款卡号生成算法详解

沿途有光
沿途有光
发布时间:2026-10-13 | 6人浏览过
原创

本文介绍如何使用Python生成符合特定规则的16位贷款卡号。该卡号前三位为数字或大写字母,中间十位为数字,后两位为基于前十四位加权求和计算的校验码。文章详细解析了权重分配、字母转数字及补零逻辑,并提供完整可运行的Python代码示例,适用于Web系统测试中一次性卡号的需求场景。

Python实现16位贷款卡号生成算法详解

前言

在对某Web系统进行测试时,遇到了需要生成“贷款卡号”的需求。该卡号具有唯一性限制,即生成并保存后,再次使用相同的卡号将导致失败。

为了解决这一问题,决定分析其生成逻辑,并编写代码模拟生成过程。

为简化处理,代码中默认贷款卡号的前三位仅使用数字进行生成。

贷款卡号生成规则解析

具体的生成规则如下:

贷款卡编码总长度为16位,其中最后两位为校验位。

完整的编码规则构成如下:

前三位字符可以是数字或大写英文字母。

第四位至第十四位(共11位)必须为数字。

最后两位校验码的计算逻辑为:

将前十四位字符分别乘以对应的权重值,求和后除以97,取余数,最后将余数加1。

若计算结果为一位数(小于10),则在该数字前补0,使其成为两位数。

前十四位编码对应的权重序列为:1, 3, 5, 7, 11, 2, 13, 1, 1, 17, 19, 97, 23, 29。

若某一位为字母,需将其转换为对应的数字值,例如A对应10,B对应11,依此类推。

Python代码实现

以下是基于上述规则的Python实现代码:


import random

power = [1,3,5,7,11,2,13,1,1,17,19,97,23,29] #权重
arr = []
sum = 0

#随机生成前14位并保存在列表arr中
for i in range(14):
  value = random.randint(0,9)
  arr.append(value)

#前十四位乘以权重相加
for j in range(14):
  value = arr[j] * power[j]
  sum = sum + value

#除以97后的余数再加1
last_two = sum % 97 + 1

#如果此数字为个位数,前面还需要补一个零
if last_two>10:
  shiwei = last_two // 10
  gewei = last_two % 10
  arr.append(shiwei)
  arr.append(gewei)
else:
  shiwei = 0
  gewei = last_two
  arr.append(shiwei)
  arr.append(gewei)

#输出贷款卡号
print("loanCardNo: ",end="")
for i in range(0,16):
  print(arr[i],end="")

以上即为本文的全部内容,希望能为读者提供有益参考,也欢迎大家继续支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表