【问题标题】:Python -personal Identification numberPython - 个人身份证号
【发布时间】:2018-11-21 09:41:06
【问题描述】:

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

【问题讨论】:

  • 欢迎来到 SO。参考How to ask a question on SO
  • 我无法真正理解这里的问题。 “想问一些关键词”并不具体。你能展示一下你做了什么以及你遇到了什么问题吗?
  • 看一些代码对我们总是有用的。此外,最好知道您自己已经尝试过一些东西,并询问我们您可能做错了什么或错过了什么。另外,制定一个清晰而独特的问题,如果它还没有出现在你的标题中,也可以突出显示。

标签: python keyword generate


【解决方案1】:

我在这里假设您已经拥有数字的日期部分。然后您可以使用此代码有效地计算“尾巴”:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2019-10-10
    • 2020-07-11
    • 1970-01-01
    • 2017-08-16
    • 2013-08-10
    • 1970-01-01
    相关资源
    最近更新 更多