使用 Python 的随机密码生成器

Random Password Generator using Python

我正在创建一个随机密码生成器。 1st 我必须询问用户密码的长度,它必须至少有 8 位数字,最多 16 位数字。我创建的是要求用户输入密码本身并从那里检查长度。首先,我希望用户键入密码的长度,例如:7 或 9 等等。如果用户输入的数字少于 8 位且多于 16 位,则它必须显示“必须至少有 8 位数字,最多有 16 位数字”。请参考下面的代码,如果不清楚请参考这两个图像。谢谢。

输入

import random
import string

print('hello, Welcome to Password generator!')

l = False
while not l:
    length = input('\nEnter the length of password: ')
    if len(length) < 8 :
        print('You password length is too short(must be more than 8 character)')
        print(len(length), "is the length of your password")
    elif len(length) > 16:
            print('You password length is too long(must be less than 17 character)')
            print(len(length), "is the length of your password")
    else:
            print('You password length looks good')
            break

lower = string.ascii_lowercase
upper = string.ascii_uppercase
num = string.digits
symbols = string.punctuation

all = lower + upper + num + symbols

temp = random.sample(all,length)

password = "".join(temp)

print(password)

输出

hello, Welcome to Password generator!

Enter the length of password: 9
You password length is too short(must be more than 8 character)
1 is the length of your password

Enter the length of password: 9
You password length is too short(must be more than 8 character)
1 is the length of your password

input() 的 return 类型是 str 或字符串。当您检查分配给 length 的 return 值的长度时,它正在计算字符串中的字符数,而不是检查给定数字是否大于或小于另一个数字。要解决此问题,请在 length 上调用整数构造函数 int() 或将其放在对 input 的调用周围,以便在检查之前将字符串转换为数字类型。

length = int(input('\nEnter the length of password: '))

此外,由于 length 现在是一个整数,您可以直接执行检查而无需调用 len。例如

if length < 8:
    ...

你应该这样写:

lenght = int(input('insert lenght: '))

在Python中,int内置函数(也)用于将str转换为整数(int)变量。

那么你必须这样修改你的代码:

print(lenght, "is the length of your password")

我会提出一些其他改进建议。

all = lower + upper + num + symbols #Here you are overwriting the all built-in function

...或...

while True: #Instead of "while not l"
    if (condition_that_will_end_the_loop):
        break

内置的len函数returns一个int,用法是这样的:

>>> len([1, 2, 3, 'hey'])
4
>>> len('string')
6