“一个学编程的工业工程师”
在网上看到了金角大王(Alex)老师的课,老师讲课很幽默,开始记录每一次学习作业的内容,欢迎大家交流以及代码的使用。
- day1作业内容
1.1 创建一个博客(老铁没毛病,就手头目前这个)
1.2 编写登入接口(要求:1.输入用户名密码;2.认证后欢迎信息;3.输入三次错误后锁定)
1.3 多级菜单(要求:1.三级菜单;2.可依次进入子菜单;3.所需新知识 列表 字典) - 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()
-
总结
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
**