基于Python的登录系统
这真是个新手问题。 因此,我试图用Python编写一个登录系统,它要求输入用户名(只有1个可用用户名),如果输入的用户名不正确,它会说用户名无效,如果正确,它会要求输入密码,如果密码不正确,它会说密码不正确,然后再次要求输入密码,如果输入的密码正确,它只会说登录 到目前为止,我所能做的是:基于Python的登录系统,python,login-system,Python,Login System,这真是个新手问题。 因此,我试图用Python编写一个登录系统,它要求输入用户名(只有1个可用用户名),如果输入的用户名不正确,它会说用户名无效,如果正确,它会要求输入密码,如果密码不正确,它会说密码不正确,然后再次要求输入密码,如果输入的密码正确,它只会说登录 到目前为止,我所能做的是: a = 0 while a < 1: print ('Username:') name = input() if name != 'Teo
a = 0
while a < 1:
print ('Username:')
name = input()
if name != 'Teodor': #checks the username typed in
print ('Invalid username.')
continue
else:
print ('Hello, Teodor.')
print ('Password:')
a = a + 1
password = input()
b = 0
while b < 1:
if password != '1234': #checks the password typed in
print ('Password incorrect.')
b = b + 1
continue
else:
print ('Password correct.')
print ('Logging in...')
print ('Logged in.')
break
a=0
而a<1:
打印('用户名:')
名称=输入()
如果名称!='Teodor':#检查键入的用户名
打印('无效用户名')
持续
其他:
打印(“你好,Teodor.”)
打印('密码:')
a=a+1
密码=输入()
b=0
b<1时:
如果是密码!='1234':#检查输入的密码
打印('密码不正确')
b=b+1
持续
其他:
打印('密码正确')
打印('登录…')
打印('已登录')
打破
这是可行的,尽管如果用户输入了错误的密码,它会做一些我不想做的事情。如果用户输入了不正确的密码,我希望程序告诉用户“不正确的密码”,并继续再次请求,但它没有这样做,它只是打印“不正确的密码”,然后终止。不过,它在请求用户名的部分100%有效
这是我错过的一件小事。我怎样才能解决这个问题?
非常感谢 检查密码时不需要使用
+1
。这就把你从循环中解脱出来了
相反,请尝试:
if password != '1234': #checks the password typed in
print ('Password incorrect.')
continue
一个更好的解决方案是,不使用+1
和这个循环(而b<1:
)在输入无效密码时终止
看
> if password != '1234': #checks the password typed in
> print ('Password incorrect.')
> b = b + 1
> continue
代码行b=b+1
使while b<1:
变为false,从而结束循环并终止程序。每当用户输入错误密码时,语句b=b+1
将终止while
循环。真的没有必要
您也可以将密码提示包装在while
循环中:
while input("Enter password") != "1234":
print("Password incorrect")
正如其他人已经指出的,问题在于b=b+1
在b<1:
时破坏了条件,导致它不要求另一个密码。只需删除行b=b+1
想让它变得更好吗?
用getpass()
而不是input()
避免“越肩”攻击。您的密码输入被屏蔽为***
前
加密
好吧,除了听起来很酷之外,这并不能真正阻止某人修改代码跳过密码阶段——但它可以阻止他们在代码中看到原始密码
有一个使用passlib
这有助于保护非唯一/敏感密码(例如,您用于5倍其他用途的密码,或您母亲的婚前姓氏…不要将她拖到这一步中)
while input("Enter password") != "1234":
print("Password incorrect")
from getpass import getpass
password = getpass()