[英]Random password generator with words limit
I am creating a random password generator.我正在创建一个随机密码生成器。 I wanted to create an input field where the length of the password can only be min 8 and max 16. If user input the length other than the allowable length, it will keep asking the user to input the right password length.
我想创建一个输入字段,其中密码的长度只能是最小 8 和最大 16。如果用户输入的长度不是允许的长度,它会一直要求用户输入正确的密码长度。 I use 'return' so it return to
length = int(input('\nEnter the length of password: '))
, but it does not work here.我使用 'return' 所以它返回到
length = int(input('\nEnter the length of password: '))
,但它在这里不起作用。 Can I get advice on how to make this right?我可以就如何做到这一点获得建议吗?
#input the length of password
#must be minimun 8 to maximun 16
length = int(input('\nEnter the length of password: '))
#if use enter less than 8 or more than 16
if length < 8 :
print('You password length is too short(must be more than 8 character)')
return;
elif length > 16:
print('You password length is too long(must be less than 17 character)')
return;
else:
print('You password length looks good')
Use the built-in len
function instead and use a while loop:改用内置的
len
函数并使用 while 循环:
#input the length of password
#must be minimun 8 to maximun 16
#if use enter less than 8 or more than 16
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
Output:输出:
Enter the length of password: thisismorethan16characters
You password length is too long(must be less than 17 character)
26 is the length of your password
Enter the length of password: thisisgood
You password length looks good
>>>
Also, remove the int()
so we can allow the user to enter a string, and you usually use return
when it's in a function.此外,删除
int()
以便我们可以允许用户输入字符串,并且通常在函数中使用return
。 Also there is no use of ;
也没有使用
;
in python.在蟒蛇。
the code will run till you enter a correct password.
代码将一直运行,直到您输入正确的密码。 I declared a variable correct_pass set to false.
我声明了一个设置为 false 的变量 correct_pass。 with condition correct_pass == False in while loop when the user enters correct password the value of correct_pass is changed to True and hence it exits out of the loop and in other cases it value remains unchanged
当用户输入正确的密码时,while 循环中的条件 correct_pass == False 当用户输入正确的密码时,correct_pass 的值更改为 True,因此它退出循环,在其他情况下,它的值保持不变
correct_pass=False
while(correct_pass==False):
length = input('\nEnter the length of password: ')
if len(length) < 8 :
print('You password length is too short(must be more than 8 character)')
correct_pass=False
elif len(length) < 8:
print('You password length is too long(must be less than 17 character)')
correct_pass=False
else:
print('You password length looks good')
correct_pass=True
Your code is basically using integer value instead of the length or the number of integers the user inputs.您的代码基本上使用整数值而不是用户输入的长度或整数数。
let's say I enter 9 as the input.假设我输入 9 作为输入。
Then, you're using an If-elif-else block.然后,您正在使用 If-elif-else 块。
if length (user input which is 9 at the moment) <8, print "Your password length is too short".如果长度(当前用户输入为 9)<8,则打印“您的密码长度太短”。 In our case, the length is equal to 9 and it's also less than 17. So we satisfy the conditions.
在我们的例子中,长度等于 9,也小于 17。所以我们满足条件。
But if we enter, for example0, 2222. This is obviously a much bigger value than what your code asked for.但是如果我们输入例如 0, 2222。这显然比您的代码要求的值大得多。 I hope I made your mistake clear.
我希望我把你的错误说清楚了。 Now, the fix would be: Check out this comment
现在,解决方法是:查看此评论
mn= input("please choose a password") pi= len(mn) mn= input("请选择密码") pi= len(mn)
if pi>16 or pi<8: print("sorry! Your password length must be between 8 and 16 characters!") if pi>16 or pi<8: print("对不起!您的密码长度必须在 8 到 16 个字符之间!")
else : print("welcome!")否则:打印(“欢迎!”)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.