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】大法。非常感谢小阔爱们看到了这里,从上述两个代码中可以发现,面向过程编程缺点:若修改某一部分功能,会导致其他部分同时需要修改。牵一发而动全身,扩展性差。
python基础-面向过程编程的更多相关文章
- python基础——面向过程的编程思想及举例
面向过程的编程思想 1.面向过程的编程思想及举例 写程序时: 要先想功能,分步实现 2. os模块中walk输出目录中文件路径 os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上 ...
- python 3 面向过程编程
python 3 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就像设计好一条工业流水线,是一种机械式的思维方式. 1.优点:程序结构清晰,可以把复杂的问题简单化,流程 ...
- 匿名函数 python内置方法(max/min/filter/map/sorted/reduce)面向过程编程
目录 函数进阶三 1. 匿名函数 1. 什么是匿名函数 2. 匿名函数的语法 3. 能和匿名函数联用的一些方法 2. python解释器内置方法 3. 异常处理 面向过程编程 函数进阶三 1. 匿名函 ...
- Python 迭代器-生成器-面向过程编程
上节课复习:1. 函数的递归调用 在调用一个函数的过程中又直接或者间接地调用了函数本身称之为函数的递归 函数的递归调用有两个明确的阶段: 1. 回溯 一层一层地调用本身 注意: 1.每一次调用问题的规 ...
- python函数:匿名函数、函数递归与二分法、面向过程编程
今天主要讲三大部分内容: 一.匿名函数二.函数递归与二分法三.面向过程编程 一.匿名函数: """ 1. 什么时匿名函数 def定义的是有名函数:特点是可以通过名字重复调 ...
- day22 yield的表达式的应用,面向过程编程,内置函数前几个
Python之路,Day10 = Python基础10 生成器表达式: (i for i in range(10) if i > 5)os.walk(r'文件路径')返回一个迭代器, 第一次ne ...
- Python基础:函数式编程
一.概述 Python是一门多范式的编程语言,它同时支持过程式.面向对象和函数式的编程范式.因此,在Python中提供了很多符合 函数式编程 风格的特性和工具. 以下是对 Python中的函数式编程 ...
- python基础之socket编程 (转自林海峰老师)
python基础之socket编程 阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 ...
- Python 基础之socket编程(一)
Python 基础之socket编程(一) 可以进行通信玩儿了,感觉不错不错,网络通信就像打电话,我说一句你听一句之后,你再说一句,我听一句,就这样.....下去了.不扯淡了,来来来,看看今天都搞了点 ...
随机推荐
- Linux 命令之 mkdir
mkdir的作用是创建一个目录,可以理解为 make directory 的缩写. 创建目录 mkdir dir_name 在当前目录创建一个名为 dir_name 的目录. 同时创建多级目录 假设现 ...
- CentOS 7 的 systemctl 命令
Centos 7.* 使用 Systemd 进行系统初始化,因此,Centos 7.* 中我们可以使用 systemctl 管理系统中的服务. systemctl 管理的服务均包含了一个以 .serv ...
- 2. spring 应用之IOC
本文是作者原创,版权归作者所有.若要转载,请注明出处 我们知道Spring Framework 最重要的功能就是IoC (Inversion of Control ),也叫DI(dependency ...
- Pandas处理日常EXCEL表格的便捷操作
第一次写博客,写的可能有点乱,有问题可以一起探讨.格式可能控制也不是太好. 1.日常的数据集大多带有中文格式,例如“公务员招聘岗位汇总.xls”.我们使用pandas的read_csv()函数读取可能 ...
- C语言--最大公约数
//辗转相除法 int main() { int a,b; int t; scanf("%d %d", &a,&b); ) { t = a%b; a = b; b ...
- DataStructure之线性表以及其实现
线性表 应用:多项式的表示 什么是线性表 多项式表示问题给出的启示: 同一个问题可以有不同的表示(存储)方法 有一类共性问题 : 有序线性序列的租住和管理 “线性表(Linear List)” : 由 ...
- 使用ipython %matplotlib inline
首先讲讲这句话的作用,matplotlib是最著名的Python图表绘制扩展库,它支持输出多种格式的图形图像,并且可以使用多种GUI界面库交互式地显示图表.使用%matplotlib命令可以将matp ...
- top命令之性能分析
top命令详解 当前时间20:27:12 当前系统运行时间3:18秒 1个用户 系统负载平均长度为0.00,0.00,0.00(分别为1分钟.5分钟.15分钟前到现在的平均值) 第二行为进程 ...
- React学习系列之(1)简单的demo(React脚手架)
1.什么是React? React是一个一个声明式,高效且灵活的用于构建用户界面的JavaScript库.React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 ...
- CentOS7使用‘中科大源’
中科大的源质量速度都不错,推荐使用. 这里列出CentOS 7的Base和epel的源. 进入/etc/yum.repos.d/中,将原本的几个repo文件备份,之后新建三个repo文件 内容如下: ...