系统设计要求:

  (1)可以输入用户名和密码

  (2)密码要密文显示

  (3)输错三次要锁定对应的用户

 

首先,我们来完成要求1,设计一个可以输入用户名和密码的界面,输入正确或错误进行提示。

 

_username = "Fisher"
_password = "goodluck"
username = input("username:")
password = input("password:")
if _username == username and _password == password:
  print("Welcome user {name} login...".format(name = username))
else:
  print("Invalid username or password !")

 

然后,我们来完成密码输入的密文显示动作,这里用到了getpass库:

  (1)这里需要import getpass库,然后通过getpass.getpass()来实现密文显示密码的动作;

  (2)这个库还有另外一个函数getpass.getuser(),是用来读取系统用户名的,无输入参数;

  (3)这个库必须在CMD模式下才能完整运行,否则会有无法密文或无法运行的问题;

 

import getpass
#系统自带用户名
_username = "Fisher"
_password = "goodluck"
username = input("username:")
password = getpass.getpass()
print(username,password)
if _username == username and _password == password:    
  print("Welcome user {name} login...".format(name = username))
else:    
  print("Invalid username or password !")

  

python生成一个程序需要输入密码才能运行 用python设计密码登录程序_python

 

最后,我们要实现对输入错误三次的用户进行锁定操作,需要用到文件操作。

  设计思路:

  (1)有一个默认的用户名、密码列表文件,用于结果校验;

  (2)输入错误三次的行为识别;

  (3)对输入三次的用户进行锁定,每次输入用户名后先检查当前账户是否被锁定,锁定用户名被记录到文件中,无论程序是否退出均有效;

  关键点:

  (1)在文件中怎样分别读取不同用户的用户名和密码

  (2)set、dict的查找、比较方法

 

import getpass
#从文件中读取所有用户名、密码到字典中
f_user_list_path = open(r"D:\python\homework\userlist.txt",'r')
f_user_blacklist_path = open(r"D:\python\homework\blacklist.txt",'r')
while True:
  Registed_user = f_user_list_path.readline()    
  #读取用户名和密码到字典里    
  #去除用户名和密码里的非法的字符,比如:空格、换行,使用strip()    
  Registed_user = Registed_user.strip(" ")    
  Registed_user = Registed_user.strip("\n")    
  Registed_password = f_user_list_path.readline()    
  Registed_password = Registed_password.strip(" ")
  Registed_password = Registed_password.strip("\n")    
  d_alluser = dict.fromkeys(Registed_user,Registed_password)    
  print(d_alluser)    
  if Registed_password == ''or Registed_user == '':
         break
#关闭文件   
f_user_list_path.close()
#读取黑名单列表到set中
s_blacklist = set()
while True:    
  blacklist_user = f_user_blacklist_path.readline()    
  #读取用户名和密码到字典里    
  #去除用户名和密码里的非法的字符,比如:空格、换行,使用strip()    
  blacklist_user = blacklist_user.strip(" ")    
  blacklist_user = blacklist_user.strip("\n")    
  blacklist_user = blacklist_user.strip("")    
  if blacklist_user != '':        
    s_blacklist.add(blacklist_user)        
  else:
    print(blacklist_user,s_blacklist)      
    break
#关闭文件   
f_user_blacklist_path.close()
#用户名密码登录
count = 0
while count < 10:    
  #用户名密码登录    
  username = input("Please input your username:")    
  #检查用户是否被锁定,如果没有锁定则可以输入密码,否则进行锁定提示
  #Set查询方法待确定
  #    print("This is your name:",username,"Blacklist is:", s_blacklist)
  #    if s_blacklist.isdisjoint(username) != True:
  #        print("您输入的错误次数太多,已禁止访问",username,s_blacklist)
  #    continue    
  password = getpass.getpass()        
  #用户名密码合法性检查
  #Dict查询方法待确定
  print(d_alluser,d_alluser.get(username))        
  if d_alluser.get(username) == password:        
    print("Welcome user {name} login...")    
  else:        
    print("Invalid username or password !")            
  count = count + 1