Python模拟登陆及个人经验(五)

简介:

实验名称:模拟登陆

实验要求:

  1. 输入用户名密码

  2. 认证成功显示欢迎信息

  3. 输错三次锁定用户

     

    思路:

  4. 用户输入username

  5. 判断username是否为真(文件)。

  6. 否:提示用户不存在;是:判断是否锁定(文件)

  7. 如果用户锁定提示:该用户已锁定;没锁定就输入密码

  8. 循环三次(判断密码是否正确)

  9. 密码超过三次不正确,就写入锁文件

     

    流程图:


3f9b32d65712b0a8ed38ee85b603dd44.png-wh_

 

 

    代码实现:

#!/usr/bin/env python
#Author:Li QW

#加载sys模块
import sys

#指定文件路径,这里用的是绝对路径
user_word='C:/Users/Administrator/Desktop/open.txt'  #用户文件
close_word='C:/Users/Administrator/Desktop/close.txt' #锁用户文件
f=open(user_word,'r')  #打开文件
user_info=f.read() # 读取文件
f.close() #读取之后关闭文件
user_lis= user_info.split("#") #以井号作为分隔符
dict = {} #导入字典
for item in user_lis:  #赋给变量item
    item_list=item.split(':') #以冒号作为分隔符
    dict[item_list[0]]=item_list[-1]    

count = 0 #计数器的作用
username = input("Input username:") #输入用户名
if username in dict:
    l=open(close_word,'r')
    black_info = l.read()
    l.close()
    black_list = black_info.split('#')
    lock_dict = {}
    for items in black_list:
        items_list = items.split(':')
        lock_dict[items_list[0]]=items_list[-1] #这里注意,用-1 读最后一行,我之前写1 ,掉进坑里爬不起来了。写1,当文件为空时,它会读取不到这个参数就会报错。
    if username in lock_dict: #如果在close.txt文件有这个用户,则提示该用户已锁!
        print("username close...")
        sys.exit() #退出
    else:
        while count <3: #输入次数小于三次继续循环
            password = input("Input password:") #输入密码
            if password == dict[username]: #判断密码是否正确
                print("Welcome user login !")
                sys.exit()
            else:
                count +=1 #错误累加一次 (相当于count = count +1)
                if count ==3: #写错三次记录到close.txt文件中
                    l=open(close_word,'a') 
                    l.write("#%s:%s"%(username,dict[username]))
                    print("用户输错三次被锁定...")
                    sys.exit() #退出
                else: #提示还有几次机会
                    print('您还有%s次机会'%(3-count)) 
else: #用户不存在打印
    print("NO usernames...") 

 

附带报错内容: 

f2c848760cbee0b07edaefd26e17d5b5.png-wh_


心得体悟:

写代码容易,排错难!做事要尽可能的考虑周全。走过的坑多了,自然就会熟悉。








本文转自白羊IT51CTO博客,原文链接:http://blog.51cto.com/000011211684/1978403,如需转载请自行联系原作者

相关文章
|
2月前
|
Java 开发者 索引
[Python]细节与使用经验
如果文中阐述不全或不对的,多多交流。
36 0
[Python]细节与使用经验
|
Python
Python:利用蒙特卡洛方法模拟验证概率分布
这个题目可以使用数学方法,将其答案显式地写出来,但是验证解出来的答案是否正确,就可以使用蒙特卡洛方法了。
355 0
Python:利用蒙特卡洛方法模拟验证概率分布
|
9月前
|
机器学习/深度学习 算法 Python
【CEEMDAN-CNN-LSTM】完备集合经验模态分解-卷积神经长短时记忆神经网络研究(Python代码实现)
【CEEMDAN-CNN-LSTM】完备集合经验模态分解-卷积神经长短时记忆神经网络研究(Python代码实现)
|
9月前
|
机器学习/深度学习 算法 Python
【CEEMDAN-VMD-GRU】完备集合经验模态分解-变分模态分解-门控循环单元预测研究(Python代码实现)
【CEEMDAN-VMD-GRU】完备集合经验模态分解-变分模态分解-门控循环单元预测研究(Python代码实现)
163 0
python--模拟掷骰子游戏
通过python模拟掷骰子的游戏
python--模拟掷骰子游戏
|
算法 安全 PHP
【高级软件实习】蒙特卡洛模拟 | PRNG 伪随机数发生器 | LCG 线性同余算法 | 马特赛特旋转算法 | Python Random 模块
本篇博客将介绍经典的伪随机数生成算法,我们将 重点讲解 LCG(线性同余发生器) 算法与马特赛特旋转算法,在此基础上顺带介绍 Python 的 random 模块。 本篇博客还带有练习,无聊到喷水的练习,咳咳…… 学完前面的内容你就会了解到 Python 的 Random 模块的随机数生成的实现,是基于马特赛特旋转算法的,比如 random_uniform 函数。而本篇博客提供的练习会让你实现一个基于 LCG 算法的random_uniform,个人认为还是比较有意思的
466 0
【高级软件实习】蒙特卡洛模拟 | PRNG 伪随机数发生器 | LCG 线性同余算法 | 马特赛特旋转算法 | Python Random 模块
python实操案例__02—利用prettytable库模拟高铁售票系统
PrettyTable 是python中的一个第三方库,可用来生成美观的ASCII格式的表格,本实操案例用此库完成。
|
数据库 数据库管理 Python
Python SQLite 基本操作和经验技巧(二)
test1.db是整个数据库文件,而不是一个表,它可以包括多个表