一. 算法描述
二. python代码实现
本代码经过多个实际食品经营许可证号码验证,确认正确,可直接复制使用
# 求Pn
def getPn(n, arr1):
if n == 1:
return 10
else:
return mod10(getSn(n - 1, arr1)) * 2
# 求特定的取余10的结果
def mod10(num):
if num % 10 == 0:
return 10
else:
return num % 10
# 求Sn
def getSn(n, arr1):
return getPn(n, arr1) % 11 + int(arr1[14-n+1])
# 求校验码
def getCheckCode(code):
c = code + 'x,'
arr1 = []
for i in reversed(c):
arr1.append(i)
for j in range(0, 10):
arr1[1] = str(j)
if getSn(14, arr1) % 10 == 1:
result = ''.join(list(reversed(arr1)))
return result[:len(result) - 1]
if __name__ == '__main__':
# 前13位许可证号数字
xkzCode = '1530825001410'
# 全部14位许可证号
print(getCheckCode(xkzCode))