黑马程序员技术交流社区

标题: 【上海校区】python基础-面向过程编程 [打印本页]

作者: 梦缠绕的时候    时间: 2019-11-15 09:29
标题: 【上海校区】python基础-面向过程编程
面向过程编程
面向过程编程其实是一种机械式的思维方式,其核心就是"过程"。

过程指的是一种解决问题的步骤,即先干什么再干什么,最后干什么。

优点:将复杂的问题流程化,进而简单化。

哈哈哈哈,这种时刻,话不多说,上代码!

# 需求:实现一个注册功能
def user_pwd_auth():
    """
    检验用户名、密码的合法性
    :return: 合法的用户名、密码
    """
    while True:
        username = input("请输入用户名>>>:")
        if username.isalpha():
            break
        else:
            print("您输入的用户名不合法!")
    while True:
        password = input("请输入密码>>>:")
        re_pwd = input("请输入确认密码>>>:")
        if password == re_pwd:
            break
        else:
            print("密码和确认密码不一致!")

    return username, password


def cut_user_pwd(username, pwd):
    """
    拼接用户名和密码,返回一个字符串
    :param username: 用户名
    :param pwd: 密码
    :return: 字符串
    """
    return f"{username}|{pwd}\n"


def save_user(userinfo):
    """
    将用户名和密码信息存储在文本文件中
    :param userinfo: 拼接后的用户名和密码字符串
    :return: None
    """
    with open("userinfo.txt", "a", encoding="utf-8") as af:
        af.write(userinfo)


def register():
    """
    注册用户信息
    :return:
    """
    # 1、让用户输入用户名、密码,检验用户名和密码的合法性,得到合法的用户名和密码
    username, pwd = user_pwd_auth()
    # 2、将用户名和密码进行拼接,得到一个用户密码字符串
    user_pwd = cut_user_pwd(username, pwd)
    # 3、将用户密码字符串存入文本文件中
    save_user(user_pwd)


register()
以上就是实现用户注册功能的面向过程思想的代码的展现。这个时候,如果我们想要在用户注册的时候,保存用户角色,并且每一个用户信息以用户名命名的文本文件保存,那我们该咋整?

# 需求:实现一个注册功能
def user_pwd_auth():
    """
    检验用户名、密码、用户角色的合法性
    用户角色:普通用户、管理员、超级用户
    :return: 合法的用户名、密码、用户角色
    """
    while True:
        username = input("请输入用户名>>>:")
        if username.isalpha():
            break
        else:
            print("您输入的用户名不合法!")
    while True:
        password = input("请输入密码>>>:")
        re_pwd = input("请输入确认密码>>>:")
        if password == re_pwd:
            break
        else:
            print("密码和确认密码不一致!")
    while True:
        user_role = input("请输入用户角色(普通用户/管理员/超级用户):")
        if user_role in ['普通用户', '管理员', '超级用户']:
            break
        else:
            print("您输入的用户角色不正确!")

    return username, password, user_role


def cut_user_pwd(username, pwd, user_role):
    """
    拼接用户名和密码,返回一个字符串
    :param username: 用户名
    :param pwd: 密码
    :return: 字符串
    """
    return f"{username}|{pwd}|{user_role}\n"


def save_user(userinfo, username):
    """
    将用户名和密码信息存储在文本文件中
    :param userinfo: 拼接后的用户名和密码字符串
    :return: None
    """
    with open(f"{username}.txt", "w", encoding="utf-8") as wf:
        wf.write(userinfo)


def register():
    """
    注册用户信息
    :return:
    """
    # 1、让用户输入用户名、密码和用户角色。
    # 检验用户名、密码和用户角色的合法性,得到合法的用户名、密码和用户角色
    username, pwd, user_role = user_pwd_auth()
    # 2、将用户名、密码和用户角色进行拼接,得到一个用户密码角色字符串
    user_pwd = cut_user_pwd(username, pwd, user_role)
    # 3、将用户密码角色字符串存入以用户名命名的文本文件中
    save_user(user_pwd, username)


register()
为了展现这个缺点,一声不吭的使用了【CV】大法。非常感谢小阔爱们看到了这里,从上述两个代码中可以发现,面向过程编程缺点:若修改某一部分功能,会导致其他部分同时需要修改。牵一发而动全身,扩展性差。


作者: 梦缠绕的时候    时间: 2019-11-15 09:29
有任何问题欢迎在评论区留言
作者: 梦缠绕的时候    时间: 2019-11-15 09:30
或者添加学姐微信
DKA-2018




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2