python01作业思路:用户登录程序

一、基础需求:

  让用户输入用户名密码
  认证成功后显示欢迎信息
  输错三次后退出程序

   作为长期从事运维工作的我来说,学习全栈开发是一个巨大的挑战。看到一些大神写的代码不仅写的代码长,功能又复杂。对于自己第一次独立编写程序没有经验。看到这样题目先不要着急写,功能先一步一步去实现。接下来实现第一次用户登录的功能:

 1 # 定义用户名和密码
 2 user = "gao"
 3 pwd = "123"
 4 # 用户输入
 5 username = input("Username:")
 6 password = input("Password:")
 7 # 判断用户输入是否正确
 8 if username == user and password == pwd:
 9     print('welcome to %s' % username)
10 else:
11     print('Wrong username or password  ')
View Code

   接下来实现三次用户登录:

 1 # 用户定义
 2 user = "gao"
 3 pwd = "123"
 4 count = 0
 5 
 6 # 判断
 7 while count < 3:
 8     username = input("Username:")
 9     password = input("Password:")
10     if user == username and pwd == password:
11         print('Welcome to %s' % user)
12         break
13     else:
14         print('Wrong username or password')
15     count += 1
View Code

二、升级需求:

  可以支持多个用户登录 (提示,通过字典存多个账户信息)
  用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)

  分析:锁定用户,可以使用文件来实现,把用户的信息存放到文件里面。下次登录的时候从文件里读取信息,如果登录的用户在文件信息中就不让他登录,这样就能实现了锁定用户禁止登录了。

     flag = False #标志位,如果连续3次都输入的用户一致,就为True,否则改为False
     last_input = alex  # 最近输入账户
   if flase == False :输入不一致,不锁定
   1. 设置flag = True, last_input = None;
     2. 每次loop, 拿本次输入的用户名跟last_input对比,如果相等,什么也不干。否则,改为flag = False
     3. 3次loop完毕,判断flag == True,代表3次都一样要锁定。

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 # @Time     : 2018/10/24  19:35
 4 # @Author   : 郜江涛
 5 # @File     : 用户登录.py
 6 # @Function : ----------------
 7 
 8 
 9 # f = open("account.txt", 'w')
10 # account = {
11 #     'gao': ['123', 0],
12 #     'liu': ['123', 0]  # 1 lock, 0 active.
13 # }
14 # f.write(str(account))
15 # f.close()
16 # 用户数据一般是提前建立好的,如果没有提前创建好。需要执行上一步。
17 f = open("account.txt", 'r')
18 account = eval(f.read())
19 f.close()
20 count = 0   # 计数器
21 last_input = None
22 flag = True
23 global user
24 while count < 3:
25     user = input("Username:").strip()  # 去掉用户字符串两边的空格
26     password = input("Password:").strip()
27     if last_input is None:   # 第一次输入
28         last_input = user
29     if last_input != user:  # 上一次与此次输入的用户不相等
30         flag = False
31     if user in account:
32         if account[user][1] == 1:   # 用户状态是否锁定
33             exit("用户已锁定,请联系管理员")
34         elif password == account[user][0]:  # 用户没有锁定
35             print('Welcome to %s' % user)
36             break
37         else:
38             print('Wrong username or password')
39     else:
40         print('用户不存在')
41     count += 1
42 else:
43     print('输入的次数太多了')
44     if flag is True:
45         account[user][1] = 1  # 3次一致,锁定
46         f = open("account.txt", 'w')
47         f.write(str(account))
View Code

 

posted @ 2018-10-27 19:42  学无止境-小郜  阅读(347)  评论(0编辑  收藏  举报