【问题标题】:Generate a random length is 12 string that is comprised uppercase and lowercase alpha and numbers [closed]生成一个随机长度为 12 的字符串,由大写和小写字母和数字组成 [关闭]
【发布时间】:2016-07-12 19:20:18
【问题描述】:

如何创建 Python 算法来生成由唯一的大写和小写字母和数字组成的 12 个字符的字符串?

在我的情况下,它将被用作唯一的会话/密钥标识符,可能在超过 50 万代之后是唯一的。

例如:

837uNNM9abCb

9HFRHcop24Cd

谢谢!

【问题讨论】:

  • 是什么阻止你自己写这篇文章?
  • 听起来像是uuid 的工作,但你尝试过什么?
  • @MitchWheat 我已经尝试为此编写代码,但在 500K+ 生成期间它是重复的。
  • @ChrisP 当然,但我不知道这种模式(大写+小写+数字)。

标签: python random passwords generator


【解决方案1】:

这很容易通过使用 while 循环和 Python 的 randomstring 库来实现。

代码:

import random
import string

def create():
    _string, counter = "", 0
    while counter < 12:
        choice = random.choice(string.ascii_letters + string.digits)
        if choice not in _string:
            _string += choice
            counter += 1
        else:
            pass
    return _string

print(create())

输出:

YWdTocQs0R4X

它在做什么:

  1. 创建变量_stringcounter
  2. 开始一个while循环,在counter &lt; 12条件变为假后中断。(在for循环上使用while循环是有原因的,我稍后会解释)
  3. 使用 Python 的随机库来查找随机数/字母(大写和小写)。
  4. 检查选项是否已经在字符串中,如果不是,则将选项添加到字符串中。但如果是,则什么也不会发生,循环会重新开始(为什么我在 for 循环上使用了 while 循环。
  5. 返回字符串!

注意:如果您对字符串中的重复项表示满意,则此单行代码的工作效率会更高。

print(''.join(random.choice(string.letters + string.digits) for _ in range(12)))

【讨论】:

  • 它只是大写。示例字符串由大写和小写字母和数字组成。
  • 我知道了,非常感谢。
  • 不客气! :)
猜你喜欢
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多