• 初学 python 之 用户登录实现过程


    要求编写登录接口 : 1. 输入用户名和密码

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

                              3.用户名输错,提示用户不存在,重新输入(5次错误,提示尝试次数过多,退出程序) 

                              4.用户名正确,密码错误,提示密码错误,重新输入.(密码错误3次,锁定用户名并提示,退出程序)

    readme

    应用知识点:

    一,文件的操作

    基本操作

    View Code

    打开文件的模式有:

    • r,只读模式(默认)。
    • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
    • a,追加模式。【可读;不存在则创建;存在则只追加内容;】 

        with语句 ,同时打开多个文件,还可以避免打开文件后忘记关闭,语法:   

    View Code   

    本例中有2个文件,一个存用户名和密码,另一个存黑名单.在读取文件后怎样转变成python对象,然后对对象进行操作,是我遇到的第一个难点!

    然后查了下资料,发现字符串split方法,可以把字符串,从逗号分隔符的地方断开,得到一个子字符串列表.这样一来,就可以对黑名单进行查找等操作了.

    1 ...
    2 user_lis_bak = f.readline().split(',')
    3 ...

    Python 字典 setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值。

     1 dict.setdefault(key, default=None) 

    二,列表和字典 

    列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

     1 names = ['xiaoli',"xiaoming",'yuanlu'] 

    通过下标访问列表中的元素,下标从0开始计数

    1 >>> names[0]
    2 'xiaoli'
    3 >>> names[1]
    4 'xiaoming'
    5 >>> names[-1]
    6 'yuanlu'
    7 >>> names[-2] #还可以倒着取
    8 'xiaoming'

    字典是一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

    1 info = {
    2     'xiaoli': "123456",
    3     'xiaoming': "111111",
    4     'yuanlu': "888888",
    5 }

    这里key是用户名,value是密码,一一对应,key是唯一的.

    三,for loop 和 if...else

    1 for i in range(10): print(i) 

    还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出

    1 for i in range(10):
    2     if i>5:
    3         continue #不往下走了,直接进入下一次loop
    4     print(i)

    用户名和密码文件格式: 

    xiaoli 123456

    xiaoming 888888

    wangpeng 111111

    luyuan 112222

    qiling 556666

    haiming 223333

    黑名单文件格式: 

    xiaoli,xiaoming,wangpeng,


    bug及优化方向:

    1. 在密码错误3次时,写入黑名单的是第三次输入的用户名,三次输入的用户名可能不同,但都是正确的.改进方向,每个正确的用户名有3次输出密码的机会!

    代码

    View Code
  • 相关阅读:
    android ART hook
    Bind Enum to ListControl
    注意WPF中绑定使用的是引用类型
    Android开发第2篇
    Android开发第1篇
    Extension method for type
    DB2实用命令记录
    TDD三大定律
    【InstallShield】 为什么卸载后有的文件没有删掉
    GAC write failed when upgrade with InstallShield
  • 原文地址:https://www.cnblogs.com/JayeHe/p/6485172.html
Copyright © 2020-2023  润新知