1 dic = {
2 'username':None,
3 'status':False
4 }
5 def login(flag): # 传入 '微信','QQ'
6 def wrapper(f):
7 def inner(*args,**kwargs):
8 if dic['status'] == True:
9 ret = f()
10 return ret
11 else:
12 i = 0
13 while i < 3:
14 username = input('请输入你的%s账号:' % (flag)).strip()
15 password = input('请输入你的%s密码:' % (flag)).strip()
16 with open('login_msg',encoding='utf-8') as f1:
17 content = eval(f1.readline()) #eval() 将文件中的内容直接取出赋值给content
18 if username == content[flag]['username'] and password == content[flag]['password']: #falg 的目的就是接受传入的内容是'微信'还是'QQ'
19 print('登陆成功')
20 dic['username'] = username
21 dic['status'] = True #改变状态
22 ret = f()
23 return ret
24 else:
25 print('你输入的账号或密码错误,你还有%d次机会,请重新输入...' % (2-i))
26 i += 1
27 return inner
28 return wrapper
29 @login('微信')
30 def taobao_home():
31 print('淘宝首页')
32 @login('微信')
33 def taobao_shop():
34 print('淘宝商城')
35 @login('qq')
36 def jingdong_home():
37 print('京东首页')
38 @login('qq')
39 def jingdong_shop():
40 print('京东商城')
41
42 choice_list = { #定义一个choice_list 用数字作key 函数名作值。
43 1:taobao_home,
44 2:taobao_shop,
45 3:jingdong_home,
46 4:jingdong_shop
47 }
48
49 while True:
50 print('1 淘宝首页
2 淘宝商城
3 京东首页
4 京东商城') #循环打印四个内容
51 choice = input('请输入你的选项:').strip()
52 if choice.isdigit():
53 choice = int(choice)
54 if 0 < choice <= len(choice_list):
55 choice_list[choice]() # 通过选择的数字 执行相应的函数
56 else:
57 print('你输入的不在选项范围内,请重新输入...')
58 else:
59 print('你输入的不是数字,请重新输入...')