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编程(一) 可以进行通信玩儿了,感觉不错不错,网络通信就像打电话,我说一句你听一句之后,你再说一句,我听一句,就这样.....下去了.不扯淡了,来来来,看看今天都搞了点 ...
随机推荐
- 微信小程序路由跳转
微信小程序路由跳转 1.wx.switchTab(Object object) 这里的tabBar是底下的导航栏指定的页面, 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 参数 O ...
- .NET Core API后台架构搭建
ASP.NET Core API后台架构搭建 项目文件:https://files.cnblogs.com/files/ZM191018/WebAPI.zip 本篇可以了解到: 依赖注入 Dapper ...
- Codeforces 986B - Petr and Permutations
Description\text{Description}Description Given an array a[], swap random 2 number of them for 3n or ...
- 对新手严重不友好的强者——Nginx那些俯拾皆是的坑
1.if和后边的括号要隔一个空格,变量后面也要有空格. 2.location / 和location = / 的意味不一样.前面的是通用匹配,后面的匹配根节点访问请求,前面的使用不好很容易引发重定向过 ...
- Spring Boot项目中如何定制HTTP消息转换器
在构建RESTful数据服务过程中,我们定义了controller.repositories,并用一些注解修饰它们,但是到现在为止我们还没执行过对象的转换--将java实体对象转换成HTTP的数据输出 ...
- pytest7-多个fixtures执行顺序
举例: import pytest order = [] @pytest.fixture(scope='session') def s1(): order.append("s1") ...
- 16.Nginx HTTPS实践
1.不做任何修改实现http跳转https(协议间的跳转): return [root@web01 conf.d]# cat url.cheng.com.conf server { listen 80 ...
- CocosCreator中_worldMatrix到底是什么(下)
Cocos Creator 中 _worldMatrix 到底是什么(下) 1. 摘要 上篇介绍了矩阵的基本知识以及对应图形变换矩阵推倒.中篇具体介介绍了对应矩阵转换成cocos creator代码的 ...
- Python中文件路径名的操作
1 文件路径名操作 对于文件路径名的操作在编程中是必不可少的,比如说,有时候要列举一个路径下的文件,那么首先就要获取一个路径,再就是路径名的一个拼接问题,通过字符串的拼接就可以得到一个路径名.Pyth ...
- C# 8 - using声明 和 异步流
这两个主题没什么关系,但是怕文章太短被移除主页. using声明 using语句块 尽管.NET Core运行时有垃圾收集器(GC)来负责内存清理工作,但是我们还是要自己确保当非托管资源不再使用的时候 ...