python之路--实现登录三次后锁定功能

0x00

上次面试时问我是否在学python,我以前也接触过,但是到了字典那儿怎么也明白不了,然后不了了之,也从网上学过爬虫,还是记得一丁点东西的,嘻嘻

最近在跟着老男孩学习python,Alex讲师说过一句话,人总是高看自己。这点我是比较认同的,总是觉得自学就可以学的好了,其实不然,要不然要老师干什么?

我是自学的,没有钱也不可能报学习班,我也是简单了解一下,别到时候什么也不知道,不做小白,也不做大佬,慢慢学习,慢慢积累。

0x01

实现的功能是:
作业二:编写登陆接口

输入用户名密码
认证成功后显示欢迎信息
输错三次后锁定

其中用到的知识点就是循环和文件,以及sys.exit()的跳出,还有一些字符串的语句

import os,sys  #导入模块
count = 0     #计数,大于三次锁定用户名
while count < 3:
    username = input("username:")  #输入用户名
    file = open("suoding.txt",'r')  #以读的方式打开锁定文档
    lines = file.readlines()   #以读取行的方式读取数据
    for i in lines:      #for循环,
        ceshi = username+"\n"  #因为他需要一个换行符一行一行的显示,那时候我什么也不知道,直接这样加了 用strip()语句即可
        if ceshi == i:
            print("用户%s已经锁定,请联系您的管理员" % username)
            file.close()  #关闭文件
            sys.exit(1)  
        f1 = open("ceshi.txt","r")
        user_list = f1.readlines()
        for user in user_list:  
            (user,passwd) = user.strip('\n').split()   #将用户和密码通过换行符截取出来
            if username == user:
                p = 0   #定义密码输入的次数,大于三次直接锁定用户名
                while p < 3:   #下面就是一个循环,如果正确就登录,如果错误,提示剩余的密码输入次数
                    password = input("password:")  

                    if password == passwd:
                        print("欢迎%s登录系统" %username)
                        sys.exit(0)
                    else:
                        if p!=2:
                            print("对不起,%s的密码错误,请重新输入,你还有%d次机会" %(username,2-p))

                    p += 1
                else:
                    f.write("%s \n" %username)
                    sys.exit("对不起,%s用户已经锁定,请联系管理员" %username)
            else:
                pass
        else:
            if count != 2:
                print('对不起,%s 输入错误,请重新输入,你还有 %d 次机会' %(username,2 - count))
    count += 1  #计数递增

else:

    sys.exit("输入次数太多,程序自动退出,请重新运行")

f.close() #关闭文件

其中的一些难点就是截取字符的语句,sys模块的使用方式,逻辑思维方式

写程序时一定要写一个逻辑图,这样就相当于打了一个框架,只要往里面填东西就行了

就像html的div+css,打好框架,一步一步的写内容,写css,让它有血有肉,成为优秀的前端

0x02

作业三:多级菜单
三级菜单
可依次选择进入各子菜单
所需新知识点:列表、字典

这个作业,先得写一个三维数组,山东省->德州市->德城区,山东省->济南市->历城区,山东省->德州市->庆云县等等

menu_dt = {“山东省{德州市[德城区],济南市[历城区],青岛市[即墨县],烟台市[],滨州市[],枣庄市[]}”,“浙江省{}”,“重庆市{}”}
要注意,必须要英文状态下的分号和引号才不报错

然后一遍一遍的遍历

其中就是在每一个菜单栏下,输入q都可直接退出,输入其他命令返回上一菜单

我到现在还没有想法,根本不懂如何返回上一层

可以写个函数,一直调用

看看大佬的文章

http://www.cnblogs.com/brianzhu/articles/6282914.html

嗯,就这样吧

猜你喜欢

转载自blog.csdn.net/bt517840374/article/details/81147679