基于Python的登录系统

基于Python的登录系统,python,login-system,Python,Login System,这真是个新手问题。 因此,我试图用Python编写一个登录系统,它要求输入用户名(只有1个可用用户名),如果输入的用户名不正确,它会说用户名无效,如果正确,它会要求输入密码,如果密码不正确,它会说密码不正确,然后再次要求输入密码,如果输入的密码正确,它只会说登录 到目前为止,我所能做的是: a = 0 while a < 1: print ('Username:') name = input() if name != 'Teo

这真是个新手问题。 因此,我试图用Python编写一个登录系统,它要求输入用户名(只有1个可用用户名),如果输入的用户名不正确,它会说用户名无效,如果正确,它会要求输入密码,如果密码不正确,它会说密码不正确,然后再次要求输入密码,如果输入的密码正确,它只会说登录

到目前为止,我所能做的是:

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()