第一个版本,没有用户选择选项,思考中!
flag_wx = False flag_jd = False def denglu(flag ="jd"): if flag == "jd": user,passwd = "ask","123" elif flag == "wx": user, passwd = "ask", "1234" def login(f): def inner(): if flag_wx ==False: username = input("请输入用户名:>>") password = input("请输入密码:>>") if username == user and password == passwd: print("登录成功!!!") f() else: print("错误") else: f() return inner return login @denglu("wx") def home(): print("welcom to home page") global flag_wx flag_wx = True @denglu def book(): print("welcom to book page") global flag_jd flag_jd = True @denglu def tv(): print("welcom to tv page") global flag_jd flag_jd = True while flag_wx == False: home()
功能基本实现:
home页面 使用:wx用户名密码
其他两个页面使用:jd用户名密码
flag_wx = False flag_jd = False def denglu(flag ="jd"): if flag == "jd": user,passwd = "ask","123" elif flag == "wx": user, passwd = "ask", "1234" def login(f): def inner(): if flag_wx ==False: username = input("请输入用户名:>>") password = input("请输入密码:>>") if username == user and password == passwd: print("登录成功!!!") f() else: print("错误") else: f() return inner return login @denglu("wx") def home(): print("welcom to home page") global flag_wx flag_wx = True @denglu() def book(): print("welcom to book page") global flag_jd flag_jd = True @denglu() def tv(): print("welcom to tv page") global flag_jd flag_jd = True while True: print("页面总和:", "home", "book", "tv") come = input("请输入你要访问的页面:》》》") if come == "home": home() elif come == "book": book() elif come == "tv": tv() else: print("请重新输入!!")
感觉还是不太熟练啊。
下面的代码接近于成品,判断使用哪个用户登录的,相互制约,仅仅能用一个用户名来登录。
保存登录状态,可持续访问其他页面。
flag_wx = False flag_jd = False def denglu(flag ="jd"): if flag == "jd": user,passwd = "ask","123" elif flag == "wx": user, passwd = "ask", "1234" def login(f): def inner(): if flag_wx == True and flag =="wx": f() elif flag_jd == True and flag == "jd": f() else: username = input("请输入用户名:>>") password = input("请输入密码:>>") if username == user and password == passwd: print("登录成功!!!") f() else: print("错误") return inner return login @denglu("wx") def home(): flag_jd = False print("welcom to home page") global flag_wx flag_wx = True @denglu() def book(): flag_wx = False print("welcom to book page") global flag_jd flag_jd = True @denglu() def tv(): flag_wx = False print("welcom to tv page") global flag_jd flag_jd = True while True: print("页面总和:", "home", "book", "tv") come = input("请输入你要访问的页面:》》》") if come == "home": home() elif come == "book": book() elif come == "tv": tv() else: print("请重新输入!!")
上面的错误你发现了么,对,就是变量没有声明为全局变量。。。
flag_wx = False flag_jd = False def denglu(flag ="jd"): if flag == "jd": user,passwd = "ask","123" elif flag == "wx": user, passwd = "ask", "1234" def login(f): def inner(): if flag_wx == True and flag =="wx": f() elif flag_jd == True and flag == "jd": f() else: username = input("请输入用户名:>>") password = input("请输入密码:>>") if username == user and password == passwd: print("登录成功!!!") f() else: print("错误") return inner return login @denglu("wx") def home(): global flag_jd flag_jd = False print("welcom to home page") global flag_wx flag_wx = True @denglu() def book(): global flag_wx flag_wx = False print("welcom to book page") global flag_jd flag_jd = True @denglu() def tv(): global flag_wx flag_wx = False print("welcom to tv page") global flag_jd flag_jd = True while True: print("页面总和:", "home", "book", "tv") come = input("请输入你要访问的页面:》》》") if come == "home": home() elif come == "book": book() elif come == "tv": tv() else: print("请重新输入!!")