面向过程编程

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

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

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

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

# 需求:实现一个注册功能
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编程基础之十二

    列表:一种有序的集合,可以同时存储多个数据,列表元素可修改,属于可变序列 创建列表: 列表名 = [列表选项一,列表选项二,列表选项三,......] list1 = [] list2 = [10,2 ...

  2. C#调用RabbitMQ实现消息队列

    前言 我在刚接触使用中间件的时候,发现,中间件的使用并不是最难的,反而是中间件的下载,安装,配置才是最难的. 所以,这篇文章我们从头开始学习RabbitMq,真正的从头开始. 关于消息队列 其实消息队 ...

  3. php函数fsockopen的使用

    函数说明:fsockopen — 打开一个网络连接或者一个Unix套接字连接 语法: resource fsockopen ( string $hostname [, int $port = -1 [ ...

  4. CDN实现原理

    避让:尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定. 检测:通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时监 ...

  5. [POJ2356] Find a multiple 鸽巢原理

    Find a multiple Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8776   Accepted: 3791   ...

  6. Spring Boot项目中如何定制HTTP消息转换器

    在构建RESTful数据服务过程中,我们定义了controller.repositories,并用一些注解修饰它们,但是到现在为止我们还没执行过对象的转换--将java实体对象转换成HTTP的数据输出 ...

  7. Cocos Creator实现1024游戏,免费提供代码。

    效果预览 ​ 获取代码 私信或留言.  游戏介绍 ● Github上的代码,不能进行合并操作,修改以后,功能类似2048,空白块赏随机位置,生成2,可以往左.右.上.下滑动,数字会朝着指定方向运动,相 ...

  8. 彩虹战队waf测试工具(测试数据)

    安全狗 D盾 云锁 360主机卫士 奇安信 绿盟 腾讯云 百度云 阿里云 小米斗鱼 启明星辰/天融信 深信服 华为 知道创宇 长亭 360天眼

  9. mybatis 使用redis实现二级缓存(spring boot)

    mybatis 自定义redis做二级缓存 前言 如果关注功能实现,可以直接看功能实现部分 何时使用二级缓存 一个宗旨---不常变的稳定而常用的 一级是默认开启的sqlsession级别的. 只在单表 ...

  10. centos7将python默认版本升级

    想用centos7来写python,但是默认安装的是python2.7(python -v命令可以查看版本信息) 准备升级到python3.5.2 首先安装编译环境 yum -y install gc ...