写函数实现账号注册以及登录

解题思路:

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

  • 判断账号:定义一个函数,用于用户注册时检查用户名是否被占用,此时不需要对密码进行判断,可以打开存储文件将账号全部提取,用于注册时判断,下面程序选择用字典储存.
  • 判断密码:此时输入注册密码,然后对密码是否和法进行判断,然后再次输入密码判断;两次输入的密码是否相同,然后定义函数对注册无误的账号密码写入到存储文件中保存.
  • 登录验证:登录前输入账号和密码时需要对账号密码进行验证,此时需要定义一个函数,打开存储文件进行验证,当输入的账号和密码匹配,则登录成功
  • 登录次数:登录次数不超过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 + "\n")
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()

 

转载于:https://www.cnblogs.com/wcx666/p/9677574.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值