【问题标题】:How to generate certain length Credit Card number with prefix?如何生成一定长度的带前缀的信用卡号?
【发布时间】:2020-02-25 02:55:27
【问题描述】:

尝试生成具有给定前缀的特定长度的信用卡号。

    while len(str(cc_number)) < (len(str(length)) - 1):
        digit = str(random.randrange(0, 9))
        cc_number = str(cc_number) + str((digit))
        return cc_number

我希望得到一个带有可变大小前缀的 16 位长数字。如何使这段代码生成正确大小的数字字符串?顺便说一句,这段代码只将 1 个随机数字连接到字符串的末尾......所以我希望得到 '4349578451278456',但实际输出是 '41'

【问题讨论】:

  • ccnumber + ''.join(random.choices(string.digits, k=16-length(ccnumber)))
  • 另外,请注意并非所有 16 位长数字都是有效的信用卡号。该号码应符合 Luhn 算法 (en.wikipedia.org/wiki/Luhn_algorithm) 才能被视为有效的 CC 号码
  • 是的,我知道。 Luhn 算法对我来说不是问题。就是这部分让我头疼。花了几个小时来解决一个问题.. 1 秒 'Shift + TAB' 问题..

标签: python random while-loop credit-card


【解决方案1】:

如果长度为 16,str(length) 将为您提供字符串 '16',其 len 为 2。只需使用不带 len 或 str 的 length

除此之外,您的 return 语句应该在循环之外

【讨论】:

    【解决方案2】:

    由于您已经在使用random 模块,我只想提供一个替代解决方案:

    from random import choices
    from string import digits
    
    cc_digits = choices(digits, k=16)
    cc_number = "".join(cc_digits)
    
    print(cc_number)
    

    【讨论】:

      猜你喜欢
      • 2017-02-24
      • 2018-04-09
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多