鱼C论坛

 找回密码
 立即注册
查看: 1760|回复: 0

[见证历程] Python 登录/注册 简单封装函数

[复制链接]
发表于 2019-3-14 17:34:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# 定义指令主菜单
MenuNote = '''
=====================欢迎使用用户登录/注册小程序=================

                        |--- 新建用户:N/n ---|
                        |--- 登录账号:E/e ---|
                        |--- 退出程序:Q/q ---|

'''
# 存放用户名密码的字典
userInfo = {}
# 判断用户名唯一
def userNameIsUnique(userName):
    if userName in userInfo:
        return False
    else:
        return True
# 判断密码与确认密码是否一致
def userPassCheck(userPass,userPassSecond):
    if userPass == userPassSecond:
        print("密码设置成功")
        print(MenuNote)
        return True
    else:
        print("两次密码输入不一致,请重新设置")
        return False
#用户密码匹配校验
def passwordMatching(userName,userPass):
    if userInfo[userName] == userPass:
        print("密码验证通过,登录成功")
        return True
    else:
        print("用户名与密码不匹配")
        return False
#空字符串或空字符校验
def isEmpty(dataString):
    flag = 1 if  dataString.strip() is '' else 0
    return  flag
#设置密码
def setUserPass(userName):
    while True:
        userpassFirst = input("请为" + userName + "设置密码(第1次)")
        if isEmpty(userpassFirst):
            print("密码不能为空,请重设")
            continue
        userPassSecond = input("请为" + userName + "设置密码(第2次)")
        isSamePassFlag = userPassCheck(userpassFirst, userPassSecond)
        if isSamePassFlag:
            userInfo[userName] = userpassFirst
            print(userInfo)
            break

# 新建用户模块
def newUser(userName1):
    while True :
        userName = input("请输入注册用户名: ") if isEmpty(userName1)  else userName1
        while True :
            if isEmpty(userName):
                userName = input("用户名不能为空,请重新输入")
            else:
                break
        isUniqueFlag = userNameIsUnique(userName)
        #用户名是否唯一
        if isUniqueFlag:
            while True:
                userpassFirst = input("请为"+userName+"设置密码(第1次):")
                if isEmpty(userpassFirst):
                    print("密码不能为空,请重设")
                    continue
                userPassSecond = input("请为"+userName+"设置密码(第2次):")
                isSamePassFlag = userPassCheck(userpassFirst,userPassSecond)
                if isSamePassFlag :
                    userInfo[userName] = userpassFirst
                    print(userInfo)
                    break


            break
        else:
            print("用户名重复")
# 登录模块
def userLogin():
    while True:
        userName = input("请输入登录账号: ")
        if isEmpty(userName) == 0:
            if userNameIsUnique(userName) == False:
                userPass = input("请输入密码: ")
                isMatch =  passwordMatching(userName, userPass)
                if isMatch == True:
                    print(MenuNote)
                else:
                    resetPasswordCode = input('是否重设密码?(Y/N)')
                    while True:
                        if resetPasswordCode == 'Y' or resetPasswordCode == 'y':
                            setUserPass(userName)
                            break
                        elif resetPasswordCode == 'N' or resetPasswordCode == 'n':
                            print('您选择了不重设密码,将回到主页面')
                            print(MenuNote)
                            break
                        else:
                            resetPasswordCode = input('指令不存在,请重新选择是否重设密码?(Y/N)')
            elif userNameIsUnique(userName) == True:
                isNewUserCode = input("用户不存在,是否新建?(Y/N)")
                while True:
                    if isNewUserCode == 'Y' or isNewUserCode == 'y':
                        newUser(userName)
                        break
                    elif isNewUserCode == 'N' or isNewUserCode == 'n':
                        print("你选择了否,将退回主菜单")
                        print(MenuNote)
                        break
                    else:
                        isNewUserCode = input('你输入的指令错误,请重新输入是否新建(Y:是 N:否)')
            break
        else:
            print("用户不能为空")

# 主函数部分
print(MenuNote)
username = ''
while True:
    code = input("请输入指令代码: ")
    if(code == 'N' or code == 'n'):
        newUser(username)
    elif(code == 'E' or code == 'e'):
        userLogin()
    elif(code == 'Q' or code == 'q'):
        print("感谢使用,再见!")
        break
    else:
        print("指令不存在,请重新输入")

业务规则:
①新建用户,用户登录,退出的功能
②用户名,密码不能为空
③登录时用户不存在可直接新建
④用户密码匹配校验
⑤指令不存在的提示
⑥设置密码输2遍

----------------------测试场景--------
序号        场景覆盖测试
1        新建用户,输入唯一用户名,设置2次相同的密码,
2        新建用户,输入唯一用户名,设置2次不相同的密码,
3        新建用户,输入已存在的用户名
4        用户登录,输入不存在的用户名,是否新建选择‘是’,设置2次相同密码
5        用户登录,输入不存在的用户名,是否新建选择‘是’,设置2次不相同密码
6        用户登录,输入不唯一用户名,是否新建选择‘否’
7        用户登录,输入不唯一用户名,是否新建输入不存在的指令
8        用户登录,输入已存在的用户名,密码输入正确
9        用户登录,输入已存在的用户名,密码输入不正确
10        输入不存在的菜单指令
11        退出
12        新建用户,设置密码为空
13        新建用户,设置用户名为空
14        登录,输入密码不对,重设置密码选择‘是’
15        登录,输入密码不对,重设置密码选择‘否’
16        登录,重设用户名为空
17        登录,重设密码为空

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 04:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表