userpass= input('Enter a password with at least one uppercase letter, one lowercase letter, and one number: ')
uppercounter=0
lowercounter=0
numbercounter=0
for i in range(len(userpass)):
if userpass[i].isupper():
uppercounter=uppercounter+1
print(uppercounter)
if uppercounter > 0:
print("working")
else:
print('Password Denied')
raise SystemExit(0)
if userpass[i].islower():
lowercounter=lowercounter+1
print(lowercounter)
if lowercounter > 0:
print('working')
else:
print('Password Denied')
raise SystemExit(0)
if userpass[i].isnumeric():
numbercounter=numbercounter+1
print(numbercounter)
if numbercounter > 0:
print("working")
print("Password Accepted")
else:
print('Password Denied')
raise SystemExit(0)
我正在尝试为密码制作一个程序,该密码必须包含一个大写字母、一个小写字母和一个数字。但是if语句似乎工作不正常,每当我输入像“Py11”这样的密码时,它就会说密码被拒绝
因为你的逻辑是错误的。 首先,输入
Py11
密码,然后输入第一个if语句循环从
Py11
中获取的第一个值是P
。当它转到第二个if语句时,它立即转到第二个if语句的else语句,因为该值仍然是P
我尽量不修改您的代码,但您可以这样尝试:
对于密码的每个字符,您都要检查所有三个条件: 假设你输入了“嗨”
对于第一个循环,您将使用字母“h” 如果它是上限(不是上限),那么您将运行密码拒绝部分(这就是问题所在)
为了完成您想要的内容,我建议如下检查:
对于您检查上限、下限、数字的条件,如果您想允许特殊字符,您还需要检查它们
另一种方法是:
这样你就不必检查其他特殊字符
相关问题 更多 >
编程相关推荐