使用Python的随机密码生成器



我正在创建一个随机密码生成器。首先,我必须向用户询问密码的长度,密码必须至少有8位,最多有8位​共16位。我创建的是要求用户自己输入密码,然后检查密码的长度。首先,我希望用户键入密码的长度,例如:7或9等等。如果用户键入的数字小于8且大于16,则必须显示"0";必须具有最小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()的返回类型为str或字符串。当您检查分配给length的返回值的长度时,它是在计算字符串中的字符数,而不是检查给定的数字是否大于或小于另一个。要解决此问题,请在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函数返回一个int,使用方式如下:

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

相关内容

  • 没有找到相关文章

最新更新