我正在尝试编码一个应该有10个数字的个人识别码。看起来像是990830/4197。 前两个数字-年-1999年他出生 后两个数字-月-8月 第三个数字-第3O.8天 最后的4个数字是用这种方式生成的,因此当您将其取整时,整个数字必须除以11,并且不能保留任何数字。例如 99 + 8 + 30 + 4197 = 4334/11 = 394。 该数字始终应为%= 0。 我想问一些关键词,当我想生成正确的数字时可能会对我有帮助。 谢谢
答案 0 :(得分:0)
我在这里假设您的电话号码中的日期部分已经存在。然后,您可以使用以下代码高效地计算“尾巴”:
from random import randint
date = 990830
s = sum(int(x) * 10**(i % 2) for i, x in enumerate(str(date), 1)) # note 1
tail = randint(90, 908) * 11 - (s % 11) # note 2
print('{}\{}'.format(date, tail))
产生(几个示例):
990830\5462
990830\5132
990830\8751
990830\6397
它们全部被11整除。
99 + 08 + 30
)N
的数字N % 11 == 0
。