Python之简单的用户登录和注册

#!/bin/bash/env python
# -*- coding:utf-8 -*-

def login(username,password):
    """
    用于用户名密码的登录
    :param username: 用户名
    :param password:  密码
    :return:  True,用户验证成功;False,验证失败
    """
    with open('cai.log','r',encoding="utf-8") as f:
        for line in f:      #一行一行的读取
            line = line.strip()     #去除两端的空格及换行符
            line_list = line.split("$")     #以$符号进行分割
            if username == line_list[0] and password == line_list[1]:
                return True
    return False

def register(username,password):
    """
    注册用户
    :param username: 用户名
    :param password: 密码
    :return: True,注册成功
    """
    with open('cai.log',"a",encoding="utf-8") as f:
        temp = "\n" + username + "$" +password
        f.write(temp)
    return True

def user_exist(username):
    """
    检查用户是否已经存在
    :param username: 用户名
    :return: True,则用户名已经存在;False,用户名不存在
    """
    with open('cai.log',"r",encoding="utf-8") as f:
        for line in f:
            line = line.strip()
            line_list = line.split("$")
            if username == line_list[0]:
                return True
    return False

def main():
    print("欢迎登陆瑞的系统")
    inp = input("1: 登陆;2: 注册")

    user = input("请输入用户名:")
    pwd = input("请输入密码:")

    if inp == "1":
        is_login = login(user,pwd)
        if is_login:
            print("登录成功")
        else:
            print("登录失败")
    elif inp == "2":
        is_exist = user_exist(user)
        if is_exist:
            print("用户已经存在,无法注册")
        else:
            result = register(user,pwd)
            if result:
                print("注册成功")
            else:
                print("注册失败")

main()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云霄雨霁

了解Jalangi2

1200
来自专栏DannyHoo的专栏

APNS推送原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/de...

2253
来自专栏Java学习网

Java多线程技术的9大知识点总结——精心整理

1,进程和线程的概念。 |--进程:是程序的动态执行过程,它经历了从代码加载,执行,到执行完毕的一个完整过程。 |--线程:是实现并发机制的一个有效手段。 ? ...

2546
来自专栏闵开慧

mapreduce主程序如何传递变量到map或者reduce函数中使用

    一般我们写的mapreduce主程序放在客户端机器上,执行任务时是在集群机器上,所以要将变量从主程序传递到我们自己写的map或者reduce函数中就不能...

4115
来自专栏程序员互动联盟

【专业技术】C语言EOF如何使用?

存在问题: 又一次遇到有人问EOF的用法,到底如何来使用那? 解决方案: 这里有一篇文章写的不错,希望对EOF没有理解的同学能有所帮助。 我学习C语言的时候,遇...

3858
来自专栏向治洪

volatile和synchronized的区别和联系

volatile 它所修饰的变量不保留拷贝,直接访问主内存中的。    在Java内存模型中,有main memory,每个线程也有自己的memory (例如寄...

2078
来自专栏dizhiling专栏

一行命令实现cpu占用率100%

cat /proc/cpuinfo |grep "physical id" | wc -l 可以获得CPU的个数, 我们将其表示为N.

1151
来自专栏IT可乐

Linux系列教程(二十二)——Linux的bash变量

  上篇博客我们介绍了bash的一些基本功能,这是我们平时操作最频繁的。本篇博客我们介绍bash的变量,为后面编写shell脚本做铺垫。 1、什么是变量   变...

21110
来自专栏十月梦想

Express框架之中间件(一)

如果我的的get、post回调函数中,没有next参数,那么就匹配上第一个路由,就不会往下匹配了。

822
来自专栏从零开始学自动化测试

python文档23-fixture作为参数传入,error和failed区别

fixture是pytest的核心功能,也是亮点功能,熟练掌握fixture的使用方法,pytest用起来才会得心应手!

1404

扫码关注云+社区