Python使用随机函数生成一个四位数字的随机密码

5

在Python中,我如何创建一个四位数的随机PIN码?

我知道Python有random.randint函数,但我不知道如何生成四位数的数字。


如果您在实际应用中使用此功能,您可能希望拒绝一些常见的数字列表,例如1234或9999。 - Mark Ransom
6个回答

6

如果需要输出整数,需要考虑缺失的前导零,因此最好输出字符串或整数列表:

如果您想要任何可能的组合,请执行以下操作:

from random import randint
[randint(0,9) for _ in range(4)]

或者

''.join(str(randint(0,9)) for _ in range(4))

如果您不想要重复的数字。
from random import sample  
sample(range(10), 4)

或者

''.join(sample("0123456789", 4))

4

试试这个:

import random

pin = random.randint(999, 9999)
print pin

randint(a, b) 会返回从 ab 的随机数。更多关于 random 模块的信息请查看Python文档


4
请注意,这样做不会生成以数字“0”作为首位的任何数字。通常,密码允许有这种情况。 - user2555451
解决缺少前导零的简单方法是使用 rjust,像这样 str(random.randint(0, 9999)).rjust(4, '0') - WBAR

2
您可以尝试以下方法:
import random

pin = random.sample(xrange(10), 4)

print pin

示例输出:

[6,7,4,2]

随机模块信息


2

如果目的是生成安全的 PIN 码,那么现在你需要使用 secrets 模块:

import secrets

pin = '{:0>4}'.format(secrets.randbelow(10**4))

格式化会在数字小于1000时从左边添加零。

这确实是最简单的安全方式。有关如何处理其他 PIN 大小和字母表的详细信息,请参阅 https://docs.python.org/3/library/secrets.html#recipes-and-best-practices。 - Mmmh mmh

0

试试这个:

import random

pin = str(random.randint(0, 9999)).rjust(4, '0')

0
#python module
import random

# function to generate PIN
def generatePIN():

    #varible PIN store all random digits
    PIN = ""
    #you change the length of pin by changing value of range
    for i in range(4):
        #randint generates a random number between 0,9
        PIN = PIN + str(random.randint(0,9))
    return(f"4 digits PIN:{PIN}")

print(generatePIN())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接