Python登录注册

python学习网 2017-09-22 17:35:02

要求:

  1. 实现登录,注册功能
  2. 输入三次错误,锁定用户
  3. 文本保存用户信息及锁定用户
 1 # _author : Ahern Li
 2 # @_date  : 2017/9/22
 3 
 4 print('---------- Welcome to use bugubugu ----------')
 5 times = 3   # 三次登录机会
 6 flag = True
 7 # 主循环,选择登录,注册,退出
 8 while flag:
 9     choice = input("Are you want to login or registration(input 'quit' to exit)?\n>>>:")
10     if choice == 'login':   # 登录
11         while flag:
12             username = input('Please input your username:')
13             password = input('Please input your password:')
14             # 读模式打开账户信息文本(记录已注册账户信息),文本格式如 Ahern:密码
15             with open('account.txt','r') as account:
16                 for info in account:    # 循环遍历用户名
17                     u_n,p_w = info.split(':')   # u_n 为用户名,p_w 为密码
18                     if username == u_n.strip():     # 判断用户名是否存在
19                         if password == p_w.strip():     # 判断密码是否正确
20                             # 读模式打开锁定账户文本(记录已锁定账户),文本格式如 Ahern
21                             with open('lock_account.txt','r') as lock_account:
22                                 # 循环遍历锁定用,判断是否为锁定用户
23                                 for lock_info in lock_account:
24                                     if username == lock_info:
25                                         print('Your account has been locked!')
26                                         flag = False    # 若为锁定账户,flag = False
27                                         break
28                                 # 若flag = False ,则为锁定用户,退出,否则打印的登录成功
29                                 if flag == False:
30                                     break
31                                 print('Welcome to login,%s!' % username)
32                                 flag = False
33                                 break
34                         # 密码错误,打印剩余机会
35                         else:
36                             times -= 1
37                             print('Invalid of username or password,last %d times!' % times)
38                             break
39                 # 用户名不存在,打印剩余机会
40                 else:
41                     times -= 1
42                     print('Invalid of username or password,last %d times!' % times)
43             # 若机会 times = 0 ,锁定账户文本记录用户信息,锁定账户
44             if times == 0:
45                 print('Your chances are up and account is locked!')
46                 with open('lock_account.txt','a') as lock_account:
47                     lock_account.write(''.join(['\n',username]))
48                     flag = False
49     elif choice == 'registration':  # 注册
50         while flag:
51             username = input('Please input your username:')
52             # 读写模式打开锁定账户文本,判断用户名是否存在
53             with open('account.txt','r+') as account:
54                 # 循环遍历,若用户已存在,打印用户名已被占用,否则账户信息文本记录用户名及密码
55                 for info in account:
56                     u_n,p_w = info.split(':')
57                     if username == u_n.strip():
58                         print('Username has been occupied!')
59                         break
60                 # 若用户不存在,设置密码,打印注册成功
61                 else:
62                     password = input('Please input your password:')
63                     account.write(''.join(['\n',username,':',password]))
64                     print('Successful application!')
65                     flag = False
66     elif choice == 'quit':  # 退出
67         flag = False
68     else:
69         print('Please input argin!')
70         
71 '''
72 1.该程序设定,不管用户名或是者密码错误,均打印用户名或密码无效
73 2.该程序未判断用户名或密码的格式,可优化(简单)
74 3.该程序不含小退功能,可优化(简单)
75 4.该程序只能手动删除已锁定用户,正常应为数小时候自动解锁,可优化
76     思路:难道使用time模块?未学习,没思路
77 5.该程序最大的问题,当三次机会用完,只锁定最后一次用户信息,可优化
78     思路:将账户信息文本格式改为 Ahern:密码:times ,用 u_n ,p_w ,t 分别接收,当t = 0 锁定该用户
79 6.基本实现,有点乱,有时间再整理吧
80 '''    

 

阅读(817) 评论(0)