如何在使用这些值运行一段时间时验证用户输入



我正在编写一个密码生成器,要求用户输入密码LENGHT,并生成那么长的(有效(

问题:我确实验证了用户输入(while/try/except(,它获得了值错误权限,获得了最小长度权限,但它没有获得最大值,并且总是生成长度加上新长度的相同密码。

也许一些例子会帮助

from random import randint
lowerCase = "abcdefghijklmnopqrstuvwxyz"
upperCase = lowerCase.upper()
numbers = "1234567890"
special = "!#$%&/()=?¡@[]_<>,."
password_creation = lowerCase + upperCase + numbers + special
password = ""
lenght = 0
while True
try:
password_lenght = int(input("How many characters do you wish the password? Minimum 8 maximum 1024: "))
if password_lenght < 8 or password_lenght > 1024:
print("Minimun 8 characters - maximum 1024, try again")
except ValueError:
print ("Please enter a valid NUMBER...")
continue
else:
while lenght < password_lenght:

password = password + password_creation[randint(0, len(password_creation) -1)]
lenght +=1


print("Generated password: ", password)

如果我运行这个代码,它有点工作:

>>> %Run z_strong_password_gen.py
How many characters do you wish the password? Minimum 8 maximum 1024: asdsads
Please enter a valid NUMBER...

好的,它检测我是否输入非数值,

现在让我们试试8以下的数字(最小值。

How many characters do you wish the password? Minimum 8 maximum 1024: 1
Minimun 8 characters - maximum 1024, try again
Generated password:  $
How many characters do you wish the password? Minimum 8 maximum 1024: 3
Minimun 8 characters - maximum 1024, try again
Generated password:  $?$)

好的,它与消息";最少8个字符-最多1024个,请重试";但它计算密码

现在让我们试试最大

How many characters do you wish the password? Minimum 8 maximum 1024: 1030
Minimun 8 characters - maximum 1024, try again
Generated password:  $?$NDcB&vMDY&IX@¡x#hLxP8u!oa_F6PGg&DQV8WBOwkqJW@VJ8nmFA$wrF]7soN<C(J[x#[HRm,xL(7(OiCcdV43#XUfa9o7LYwBq55[n24geBl=@U<&!$fH]01&>]bG3/l&[>u2mA4N9IiNUUTj=tWJ)g4wz>A67qNV7O]aKZVfvc3F?B/TCsCjzYe3pOQ%f1nrvFO7prBr[C_Eqs8W?7GU/vor/>xJtV.FLKUL94)KZ(JCc1#gFv,=wJ5rvBR2[5)hhv[tAi)&8AXB1n)FPyUi6WZeqzWnj@R0t.WYja%r2pD_3¡hoW7nRncdf,ExV5._)W(/P3yOyvp#jZNpQIt6Y1cbfoq[mweSp#f)¡ADNz_Duibe<U9pJD4]4x,/G51fORryfVaekX=PIes?T>KTvfy>sQMgNjZ]4M,=5vD!G%,/gYZn(J_pxJlKzjUE65VJn)ZRVpI!&dHDtK(vh=IN=p4i7#E¡4[r!.$]J@>4&HQqSq?DXyvis<Gs)@$=5I/SRGV2&¡]DU0P$=CF,hoj7@]KhPLWsWrFgC@nEU8i3jC3yZKt)_r=m?@KH<sA$D#,f_2%rV$gwzMZoyxh=b[kBD5N%k<1SEpc<f93.)9eh74D6oi)XkylTNA3O%Vq)eUpF9VA$H5)NYUBHihMW.$O#ytgb!24?WLzi>piF0T(!6V#l1141v@i%]_BxCV2uPEPdajOdxqkJs#Fq,zAa#T.%DE%D%,I<y4zY5lgBcua!,LBu1jHf%4waKujW.Y&WMpnf<qa%#sCZlGm17iNu9fRLXXAdO[1s@g4?ZhTL60Blg?PtZNJw<AB>$poCK¡cJ7ON$kXAEZ/c¡X/H]FCHhjCVUm#na¡p_o>]7Bp//rr3YJFj<OpCL2kg,,XEsC0¡<i/$HP#Bc!X#nMlRVMW8NdV7x7ru_(2OW6/Q1P¡c_ZmJz<Z<7zELz¡6yp00$ZD&sErhSz81mVU$oO(rtqAYs=p3h%lbTr$EWiJxvq)X<z909k18rN07ZRfq@C7hWRyTH1!?&PR3%@?
How many characters do you wish the password? Minimum 8 maximum 1024: 

它发出的信息是数字大于1024,但它再次计算密码

如果我真的计算了一个密码,比方说,10个字符。。如果我想计算另一个。。。20,它从之前的计算中取第一个10,然后再加10来填充20(也许我必须清除或删除可变(

查看示例

How many characters do you wish the password? Minimum 8 maximum 1024: 10
Generated password:  **fOweHv%Wm,**
How many characters do you wish the password? Minimum 8 maximum 1024: 20
Generated password:  **fOweHv%Wm,**p6AEoh8L)l
How many characters do you wish the password? Minimum 8 maximum 1024:

你走在了正确的轨道上。当我们重新启动while循环时,您只是忘记重置密码。而且在打印最小和最大长度的错误后,您没有继续。但当它被修复时,它就起作用了:

from random import randint
lowerCase = "abcdefghijklmnopqrstuvwxyz"
upperCase = lowerCase.upper()
numbers = "1234567890"
special = "!#$%&/()=?¡@[]_<>,."
password_creation = lowerCase + upperCase + numbers + special
while True:
# pulled password and length in here to reset on each loop
password = ""
length = 0
try:
password_length = int(input("How many characters do you wish the password? Minimum 8 maximum 1024: "))
if password_length < 8 or password_length > 1024:
print("Minimun 8 characters - maximum 1024, try again")
# add continue, to not try to create password, if validation fails
continue
except ValueError:
print("Please enter a valid NUMBER...")
continue
else:
while length < password_length:
password = password + password_creation[randint(0, len(password_creation) - 1)]
length += 1
print("Generated password: ", password)

我还将lenghtpassword_lenght重命名为lengthpassword_length,所以请注意,如果您在的其他地方使用它们

我能够修复它如果输入非数字字符,它将验证用户输入以捕捉错误它检查输入的值是否在范围内它计算密码完成后退出

这是代码,我花了一整天的时间,但是。。。我能够

from random import randint
lowerCase = "abcdefghijklmnopqrstuvwxyz"
upperCase = lowerCase.upper()
numbers = "1234567890"
special = "!#$%&/()=?¡@[]_<>,."
mega_pass = lowerCase+ upperCase + numbers + special
lenght = 0
password_lenght = 0
password = ""

while True:
try:
password_lenght = int(input("How many characters long do you want the password? (min 8 - max 100; n"))
except ValueError:
print("nNumbers please...")
if  password_lenght not in range (8, 101):
print("nEnter a digit between 8 and 100...")


else:
while lenght < password_lenght:
password = password + mega_pass[randint(0, len(mega_pass) -1)]
lenght +=1

print("nYou choose" , password_lenght , "characters longn")
print("Here is your PASSWORD:n ", password)
break

这里是输出

%运行z_strong密码_gen_v2.py你想要密码的长度是多少个字符?(最小8-最大100;ghfhf677

请输入数字。。。

输入一个介于8和100之间的数字。。。你想要密码的长度是多少个字符?(最小8-最大100;0

输入一个介于8和100之间的数字。。。你想要密码的长度是多少个字符?(最小8-最大100;4444+

数字请。。。

输入一个介于8和100之间的数字。。。你想要密码的长度是多少个字符?(最小8-最大100;77

您可以选择77个字符长的

这是您的密码:[M6HlFc>4EBktF(zFQQX(Tp((&ckfCVze7#!0LQOWGQ_5aT2X]法定值%0dVU42tidOJh]e<$RTJh

相关内容

最新更新