使用 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
我正在创建一个随机密码生成器。 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