【python_自动化运维教程作业】【day1】多级菜单登入接口

“一个学编程的工业工程师”

在网上看到了金角大王(Alex)老师的课,老师讲课很幽默,开始记录每一次学习作业的内容,欢迎大家交流以及代码的使用。

  1. day1作业内容
    1.1 创建一个博客(老铁没毛病,就手头目前这个)
    1.2 编写登入接口(要求:1.输入用户名密码;2.认证后欢迎信息;3.输入三次错误后锁定)
    1.3 多级菜单(要求:1.三级菜单;2.可依次进入子菜单;3.所需新知识 列表 字典)
  2. day1代码
    结合作业1.2和1.3编写了一个有二级菜单的登入接口界面,代码只有管理员登入的功能(即程序运行后按键输入1),其他功能尚未定义,有兴趣的朋友可以自己补充交流分享。
    管理员账号:GM1,GM2,GM3 分别对应密码:123,456,789。数据储存在对应数组里,自己阅读代码的时候可以修改。
    具体代码如下:

#主窗口类
class MainDisplay():
    def main_show(self):
        print('-----------------GM银行ATM存取机---------------------')
        print('-----------------------------------------------------')
        print('------ 1.管理员登入 ------------ 2.用户登入----------')
        print('------ 3.退出系统 -----------------------------------')
        print('-----------------------------------------------------')
        self.input_function_1()

    def GM_show(self):
        print('----------------- 管理员操作界面 ---------------------')
        print('-----------------------------------------------------')
        print('------ 1.用户数据录入 -------- 2.用户数据删除 --------')
        print('------ 3.返回上级 ------------ 4.退出系统 ------------')
        print('------------------------------------------------------')
        self.input_function_2()

    #输入键盘功能(主界面)
    def input_function_1(self):
        Function = input('请输入键盘数字按键进入对应功能区:')
        if Function == '1':
            GM_Longin().input_infor()
        elif Function == '2':
            print('还未定义功能')
            pass
        elif Function == '3':
            print('还未定义功能')
            pass
        else:
            print('输入错误,请重新输入功能对应数字')
            self.input_function_1()

    #输入键盘功能(管理员界面)
    def input_function_2(self):
        Function = input('请输入键盘数字按键进入对应功能区:')
        if Function == '1':
            print('还未定义功能')
            pass
        elif Function == '2':
            print('还未定义功能')
            pass
        elif Function == '3':
            MainDisplay().main_show()
        elif Function == '4':
            print('欢迎使用,下次再见')
            exit()
        else:
            print('输入错误,请重新输入功能对应数字')
            self.input_function_2()

#管理员登入类
class GM_Longin():
    #全局参数
    UserName = None
    PassWord = None
    user_num = 0 #初始化用户列表中匹配的元素序号
    tryConutList = [3]*10 #长度为10,初始值都为3的数组
    usernameList = ['GM1','GM2','GM3']
    passwordList = ['123','456','789']
    lock_usernameList =[]
    lock_passwordList = []
    lock_num = 0 #锁定序列号

    #构造函数
    def __init__(self):
        pass
    #输入账户信息
    def input_infor(self):
        GM_Longin.UserName = input('username :')
        GM_Longin.PassWord = input('password :')
        self.check_password()

    #检测用户名是否被锁定
    def check_lock(self):
        for i in range(len(GM_Longin.lock_usernameList)):
            if self.UserName == self.lock_usernameList[i]:
                print('用户名已被锁定')
                self.input_infor()

    #检测用户名是否存在
    def check_username(self):
        self.check_lock()
        for i in range(len(GM_Longin.usernameList)):
            if self.UserName == self.usernameList[i]:
                GM_Longin.user_num = i
                return 1
        print('没有这个用户名,请重新输入')
        self.input_infor()

    #检测密码是否匹配
    def check_password(self):
        if self.check_username() == 1:
            if self.PassWord == self.passwordList[GM_Longin.user_num]:
                print('登入成功')
                MainDisplay().GM_show()
            else:
                self.tryConutList[GM_Longin.user_num] -= 1
                if self.tryConutList[GM_Longin.user_num] > 0:
                    print('登入失败,当前账号还有'+ str(self.tryConutList[GM_Longin.user_num]) +'次机会尝试登入')
                    self.input_infor()
                else:
                    GM_Longin.lock_usernameList.append(self.usernameList[GM_Longin.user_num])
                    GM_Longin.lock_passwordList.append(self.passwordList[GM_Longin.user_num])
                    #GM_Longin.usernameList.remove(self.usernameList[GM_Longin.user_num])
                    #GM_Longin.passwordList.remove(self.passwordList[GM_Longin.user_num])
                    print('账户:'+str(GM_Longin.lock_usernameList[GM_Longin.lock_num])+' 已被锁定')
                    GM_Longin.lock_num += 1
                    self.input_infor()

#主函数执行调用
if __name__ == '__main__':
    MainDisplay().main_show()


  1. 总结
    3.1 在多层if判断的时候若return返回值为None,不是自己所敲的数值时考虑是否存在堆栈回弹时中间断层的情况
    3.2 当在多个方法中需要调用同一个变量时,建议将该变量定义成全局变量,即放在类中,不要放在方法中
    3.3 在if判断某个方法的返回值时,程序会执行一次该方法

    def a():
        print('Hello')
        return 1
    
    def b():
        if a() == 1:
        print('World')
        
    if __name__ == '__main__':
    	b()
    
  • 上面代码输出结果为 Hello World

    3.4 调用其他类方法时可能会出现错误书写,注意类方法都要带括号

    错误书写:
    MainDisplay.main_show()
    正确书写:
    MainDisplay().main_show()

**

"IE编程改善分析:敲代码是最快提升你编程能力的手段" ———————by.PyDragon

**

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值