使用Python生成优惠码

4 投票
5 回答
12983 浏览
提问于 2025-04-15 18:19

使用Python语言,有什么聪明又高效的方法来生成优惠码呢?

这些优惠码可以用来生成特定的数字,比如折扣券的号码。比如说:1027828-1

谢谢!

5 个回答

1

如果你需要一个6位数的号码,你可以这样做,直到找到一个独特的值:

import random
print str(random.randint(100000, 999999))

或者你也可以按顺序来...

8

下面的代码可能不是特别符合Python的风格,也不是特别高效,但可能能满足你的需求:

 import random
 def get_promo_code(num_chars):
     code_chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
     code = ''
     for i in range(0, num_chars):
         slice_start = random.randint(0, len(code_chars) - 1)
         code += code_chars[slice_start: slice_start + 1]
     return code
5

1027828-1 这个数字非常小。攻击者只需要几行代码和几天时间,就能进行大约一百万次尝试。

下面是用 Python 生成一个难以预测的数字的方法,这个方法在 Linux 和 Windows 系统上都能用。为了确保安全,这里使用了 base64 编码。根据你的需求,你可能需要用到 urllib.urlencode(),但我建议不要用 base10,因为它能存储的信息比较少。

import os
import base64

def secure_rand(len=8):
    token=os.urandom(len)
    return base64.b64encode(token)

print(secure_rand())

顺便提一下,这里生成的是一个完整的字节,也就是 base256。256 的 8 次方是 18446744073709551616,这个数字应该足够大了。

有人提到,base64 对人类来说并不是一个很好的选择。可以考虑使用其他编码方式,比如 url-safe base64,或者像 humanhash 这样的编码,因为它们更容易输入。

撰写回答