面向过程编程

面向过程编程其实是一种机械式的思维方式,其核心就是"过程"

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

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

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

# 需求:实现一个注册功能
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】大法。非常感谢小阔爱们看到了这里,从上述两个代码中可以发现,面向过程编程缺点:若修改某一部分功能,会导致其他部分同时需要修改。牵一发而动全身,扩展性差。

python基础-面向过程编程的更多相关文章

  1. python基础——面向过程的编程思想及举例

    面向过程的编程思想 1.面向过程的编程思想及举例 写程序时: 要先想功能,分步实现 2. os模块中walk输出目录中文件路径 os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上 ...

  2. python 3 面向过程编程

    python 3 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就像设计好一条工业流水线,是一种机械式的思维方式. 1.优点:程序结构清晰,可以把复杂的问题简单化,流程 ...

  3. 匿名函数 python内置方法(max/min/filter/map/sorted/reduce)面向过程编程

    目录 函数进阶三 1. 匿名函数 1. 什么是匿名函数 2. 匿名函数的语法 3. 能和匿名函数联用的一些方法 2. python解释器内置方法 3. 异常处理 面向过程编程 函数进阶三 1. 匿名函 ...

  4. Python 迭代器-生成器-面向过程编程

    上节课复习:1. 函数的递归调用 在调用一个函数的过程中又直接或者间接地调用了函数本身称之为函数的递归 函数的递归调用有两个明确的阶段: 1. 回溯 一层一层地调用本身 注意: 1.每一次调用问题的规 ...

  5. python函数:匿名函数、函数递归与二分法、面向过程编程

    今天主要讲三大部分内容: 一.匿名函数二.函数递归与二分法三.面向过程编程 一.匿名函数: """ 1. 什么时匿名函数 def定义的是有名函数:特点是可以通过名字重复调 ...

  6. day22 yield的表达式的应用,面向过程编程,内置函数前几个

    Python之路,Day10 = Python基础10 生成器表达式: (i for i in range(10) if i > 5)os.walk(r'文件路径')返回一个迭代器, 第一次ne ...

  7. Python基础:函数式编程

    一.概述 Python是一门多范式的编程语言,它同时支持过程式.面向对象和函数式的编程范式.因此,在Python中提供了很多符合 函数式编程 风格的特性和工具. 以下是对 Python中的函数式编程 ...

  8. python基础之socket编程 (转自林海峰老师)

    python基础之socket编程   阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 ...

  9. Python 基础之socket编程(一)

    Python 基础之socket编程(一) 可以进行通信玩儿了,感觉不错不错,网络通信就像打电话,我说一句你听一句之后,你再说一句,我听一句,就这样.....下去了.不扯淡了,来来来,看看今天都搞了点 ...

随机推荐

  1. Python爬虫工程师必学——App数据抓取实战 ✌✌

    Python爬虫工程师必学——App数据抓取实战 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 爬虫分为几大方向,WEB网页数据抓取.APP数据抓取.软件系统 ...

  2. MVC ValidationAttribute 验证一个字段必须大于另一个字段

    [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter)] pu ...

  3. Oracle报错注入总结

    0x00 前言 在oracle注入时候出现了数据库报错信息,可以优先选择报错注入,使用报错的方式将查询数据的结果带出到错误页面中. 使用报错注入需要使用类似 1=[报错语句],1>[报错语句], ...

  4. PHP array_udiff_assoc

    1.函数的参数:返回数组的差集,比较时包括键值. 2.函数的参数: @params array $array @params array $array1 @params array $array2 . ...

  5. 实用---生命游戏 Java

    本程序由四个类组成: 其中Init_data,用于初始化各个活细胞的状态judge_state,用于判断下一代的细胞状态,并进行更新.set_color,用于给GUI界面中各个细胞涂色set_fram ...

  6. selenium-模块概述(1)

    Selenium是一个用于Web应用程序自动化测试工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样. 1.目录结构如下: D:\soft\python36\Lib\site-pa ...

  7. python学习-正则表达式(十)

    1.查看re模块的全部属性和函数 >>>import re,pprint >>>pprint.pprint(re.__all__) ['match', 'fullm ...

  8. Open vSwitch系列之一 Open vSwitch诞生

    Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs 2006年,SDN诞生于美国GENI项目资助的斯坦福大学Clean Slate课题 ...

  9. 如何在 Creator3D 中切换模型贴图,超级简单!

    效果预览 前两天有伙伴在 QQ 上询问,如何在 Creator 3D 中切换模型贴图.Shawn 之前也没尝试过,不过根据之前 Cocos Creator 的经验以及这几天对 Creator 3D 的 ...

  10. int和string的相互装换 (c++)

    int和string的相互装换 (c++) int转换为string 第一种方法 to_string函数,这是c++11新增的函数 string to_string (int val); string ...