-4

我试图编码一个应该有 10 个数字的个人识别号码。它看起来像这个 990830/4197。前两个数字 - 年 - 1999 他出生 第二个数字 - 月份 - 八月 第三个两个数字 - 天 3O.8 最后 4 个数字是这样生成的,所以当你取它时,整数必须除以 11 并且不能剩下任何数字。例如,例如;99+8+30+4197= 4 334 /11 = 394。数字总是应该是 % = 0。当我想生成正确的数字时,我想问一些可能对我有帮助的关键词。谢谢

4

1 回答 1

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 整除。


  1. 这只是添加所描述的日期的数字(例如,99 + 08 + 30
  2. 这会计算一个随机的 4 位数字,将其添加到上述总和中会创建N一个N % 11 == 0.
于 2018-11-21T09:56:23.123 回答