zoukankan      html  css  js  c++  java
  • 写函数实现账号注册以及登录

    解题思路:

           实现登录和注册,首先需要建立一个文件,这个文件中保存着账户和密码,然后:

    • 判断账号:定义一个函数,用于用户注册时检查用户名是否被占用,此时不需要对密码进行判断,可以打开存储文件将账号全部提取,用于注册时判断,下面程序选择用字典储存.
    • 判断密码:此时输入注册密码,然后对密码是否和法进行判断,然后再次输入密码判断;两次输入的密码是否相同,然后定义函数对注册无误的账号密码写入到存储文件中保存.
    • 登录验证:登录前输入账号和密码时需要对账号密码进行验证,此时需要定义一个函数,打开存储文件进行验证,当输入的账号和密码匹配,则登录成功
    • 登录次数:登录次数不超过3次,此时在for循环或者while循环中控制登录次数即可.
    def get_username():                                #定义一个函数用于后续用户名查重
        user = {}
        with open("user_info", mode="r", encoding="utf-8") as f:
            for line in f:
                if line == "":
                    continue
                else:
                    user_info_username, password = line.strip().split("_")
                    user[user_info_username] = password
        return user
    def regist(username,password):                           #定义一个函数用于写入你的注册名和密码
         with open("user_info", mode="a", encoding="utf-8") as f:
             f.write(username + "_" + password + "
    ")
    while 1:
        name = input("请输入您的注册名:").replace(" ", "")
        if name in get_username():
            print("您的注册名已占用,请重新注册")
        elif "_" in name or "*" in name:
            print("注册名不能含有%s和%s:" % ("_", "*"))
        else:
            while 1 :
                pwd1= input("请输入您的注册密码:")
                if "_" in pwd1 or pwd1.isdigit() or len(pwd1)<6:
                    print("密码必须大于6位,不能是纯数字,不能包含_")
                    continue
                else:
                    pwd2 =input("请再次输入您的注册密码:")
                    if pwd1 == pwd2:
                        print("恭喜注册成功,您的账号密码为%s_%s" % (name, pwd1))
                        regist(name, pwd1)
                        break
                    else:
                        print("您两次输入的密码不一致请重新输入:")
                        continue
            break
    def login(username,password):                                 #定义一个函数用于校验你输入的账号和密码
        with open("user_info",mode="r",encoding="utf-8") as f:
            for line in f:
                if line.strip()== username+"_"+password:
                    return True
            else:
                return False
    print("请进行登录")
    for i in range(2,-1,-1):
        ret =login(input("请输入用户名:"),input("请输入密码:"))
        if ret:
            print("恭喜您登陆成功")
            break
        else:
            print("用户名或密码错误,还有%s次机会" %i)

     当用面向对象和文件操作编写这个题目

    import pickle
    class User:
        def __init__(self,name,pwd):
            self.name = name
            self.pwd = pwd
    
    class Document:
        def __init__(self,file_name):
            self.file_name = file_name
        def Write(self,lst):
            with open(self.file_name,mode = "wb") as f:
                pickle.dump(lst,f)
        def Read(self):
            with open(self.file_name,mode = "rb") as f:
                lst = pickle.load(f)
                return lst
    
    class Account:
        def __init__(self):
            pass
        def register(self):
            print("请注册账号和密码")
            name,pwd = input("请输入注册名"),input("请输入密码")
            u = User(name,pwd)
            f=Document("user_info11")
            lst = f.Read()
            for el in lst:
                if el.name == u.name:
                    print("您输入的注册名已被占用,请重新输入")
                    break
            else:
                lst.append(u)
                f.Write(lst)
        def login(self):
            for i in range(2,-1,-1):
                print("请用您的账号和密码进行登录")
                username,password = input("请输入您的用户名"),input("请输入您的密码")
                f = Document("user_info11")
                lst = f.Read()
                for el in lst:
                    if username == el.name and password == el.pwd:
                        return True
                else:
                    print("登录失败,你还有%s次登录机会" % i)
    
        def run(self):
            while 1 :
                print("1:注册   2:登录   3:退出")
                num = int(input("请输入你要执行的操作:"))
                if num ==1:
                    self.register()
                elif num ==2:
                    if self.login():
                        print("登录成功,欢迎进入")
                    else:
                        print("登录失败")
                elif num ==3:
                    print("程序退出中.....")
                    break
                else:
                    print("你到底想干哈?")
    
    lst = [User("张无忌",123),User("张三丰",456),User("成昆",789)]          #首先在文件中创建一些账号信息
    f = Document("user_info11")
    f.Write(lst)
    
    obj = Account()
    obj.run()
  • 相关阅读:
    原始数据导入ods
    flume job
    flume拦截器
    Pandas用法总结
    NumPy用法总结
    matplotlib的使用
    【Java】Java线程中断(Interrupt)与阻塞(park)的区别
    【MySQL】MySQL中的索引原理与索引分类
    【JUC】从Lock到AQS了解Java中的锁
    【Redis】Redis 持久化之 RDB 与 AOF 详解
  • 原文地址:https://www.cnblogs.com/wcx666/p/9677574.html
Copyright © 2011-2022 走看看