尝编写一个用户登录程序(将功能封装成函数)

本文描述了一个用户登录程序,包括创建新用户功能,要求用户名唯一且密码验证严格。登录过程包含密码错误提示和输入次数限制。程序采用函数封装并实现基本的用户操作选项。

尝试编写一个用户登录程序(这次尝试将功能封装成函数):
---新建用户:N/n---
---登录账号:E/e---
---退出程序:Q/q---


需求一:创建用户时,用户名不可重复
需求二:登录用户时,账号不存在,提示输入账号或密码有误,请重新输入
需求三:登录用户时,如果用户密码或账号输入次数超过3次,则退出程序

user_list = {}
error_count = 0


def creat_account(user_list):
    """
    创建新账号
    :param user_list:用户清单
    :return:user_list
    """
    # 循环
    while True:
        # 请输入要创建的账号
        user = input("请输入要创建的账号:")
        # 请输入创建账号的密码
        pw1 = input("请输入密码:")
        # 密码确认,第二次输入密码
        pw2 = input("请确认密码:")
        # 判断两次密码是否一致
        if pw1 != pw2:
            print("两次密码不一致,请重新输入:")
            continue
        # 将账户存入字典
        if user not in user_list.keys():
            # 判断账号是否已经存在
            user_list[user] = pw1
            print("注册成功,赶紧试试登录吧")
            return user_list
        print("此用户名已被使用,请重新输入:")


def login(user_list):
    """
    登录账号
    :param user_list: 用户清单
    :return: None
    """
    global error_count
    # 用户输入账号和密码
    user = input("请输入用户名:")
    # 判断输入的用户名是否在用户字典的key中
    pw = input("请输入密码:")
    if user not in user_list.keys():
        error_count += 1
        print("账号或密码错误,请重新输入")
        return

    # 判断密码是否正确
    if user_list[user] != pw:
        error_count += 1
        print("账号或密码错误")
        return
    print("登录成功")
    error_count = 0
    # 提示账号或密码输入有误,请重新输入


# 循环
while True:
    # 打印欢迎界面
    print(
        """
        ---新建用户:N/n---
        ---登录账号:E/e---
        ---退出程序:Q/q---
        """
    )
    # 用户选择
    user_choice = input("请选择你要进行的操作:")
    # 判断用户选择
    # 创建
    if user_choice == 'N' or user_choice == 'n':
        user_list = creat_account(user_list)
        print(user_list)
        # 登录
    elif user_choice == 'E' or user_choice == 'e':
        login(user_list)
        if error_count >= 3:
            print("登录次数超限,请稍后再试")
            break
        # 退出
    elif user_choice == 'Q' or user_choice == 'q':
        print("程序即将退出")
        break
    else:
        print("输入有误,请重新输入:")

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值