深夜十点半(一)——我的第一个Python程序“登录系统”

系统设计要求:

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

  

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

  设计思路:

  (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        

猜你喜欢

转载自www.cnblogs.com/huaweifisher/p/9416468.html