Python 函数简单易理解版
作者:小菠萝测试笔记 发布时间:2023-02-17 21:10:47
Python 函数
一、什么是模块化程序设计?
在进行程序设计时将一个大程序按照功能划分为若干小程序模块
每个小程序模块完成一个确定的功能
并在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能
1、 编写流程——自顶向下
在设计较复杂的程序时,一般采用自顶向下的方法,将问题划分为几个部分,各个部分再进行细化,直到分解为较好解决问题为止
采用模块化设计编写程序时,不是一开始就逐条编写程序代码
而是首先用主程序、子程序等框架
把软件的主要结构和流程描述出来
以功能块为单位进行程序设计,实现其求解的方法称为模块化
2、函数在模块化设计的作用
利用函数,不仅可以实现程序的模块化,使得程序设计更加简单和直观,从而提高了程序的易读性和可维护性
而且还可以把程序中经常用到的一些计算或操作编写成通用函数,以供随时调用
二、实战
1、功能简介
实现一个通讯录管理程序,使用函数来实现程序,采用模块化的程序设计方法:
划分通讯录程序的功能模块,使用函数实现相应的功能
首先实现整体框架,然后再细化每个功能细节
最终的程序由多个函数构成,每个函数实现一个单一的功能,整个程序的结构清晰
2、通讯录功能简介
通讯录包含若干联系人,每个联系人包括:姓名、地址、电话 3 项内容。程序提供 4 项基本功能:
增加联系人: 用户输入姓名、地址、电话等信息,将信息保存在一个列表中
列出联系人: 打印输出所有联系人的信息
查询联系人: 用户输入联系人姓名,打印输出该联系人的信息
删除联系人: 用户输入联系人姓名,从通讯录中删除该联系人
3、主程序入口
通过命令行界面实现以上功能,程序 addr-manage.py 运行时首先打印一个菜单
//路径
1. create person
2. list all persons
3. query person
4. delete person
5. quit
Enter a number(1-5):
4、主程序包含以下功能
5、用什么数据结构来描述一个联系人
字典最佳
因为联系人可能会有很多个属性
假设联系人有三个属性
字典表示联系人:
{
"name": "张三",
"address": "南京",
"phone": "12306"
}那么这是一个联系人
6、用什么数据结构来描述一个通讯录
通讯录会有多个联系人,所以会有多个字典,可以通过列表来表示通讯录
zhangSan = {'name': '张三', 'address': '南京', 'phone': '12306'}
liSi = {'name': '李四', 'address': '北京', 'phone': '10086'}
persons = [zhangSan, liSi]
一个函数对应一个功能:
总的代码结构:
# 通讯录
persons = []
# 添加联系人
def create_person():
pass
# 列出联系人
def list_person():
pass
# 查出联系人
def query_person():
pass
# 删除联系人
def delete_person():
pass
# 主函数
def main():
pass
main()
三、函数实现
1、主函数代码实现
获取用户输入的选择
根据选择执行对应的功能
不断重复第一步
# 主函数
def main():
while True:
# 获取用户输入
input_str = input("1. create person\n"
"2. list all persons\n"
"3. query person\n"
"4. delete person\n"
"5. quit\n"
"Enter a number(1-5): "
)
if input_str == "1":
create_person()
elif input_str == "2":
list_person()
elif input_str == "3":
query_person()
elif input_str == "4":
delete_person()
elif input_str == "5":
break
else:
print("无效选择")
2、添加联系人代码实现
# 添加联系人
def create_person():
name = input("请输入姓名:")
address = input("请输入地址:")
phone = input("请输入手机:")
if name and address and phone:
person = {
"name": name,
"address": address,
"phone": phone
}
persons.append(person)
3、列出联系人代码实现
# 列出联系人
def list_person():
for person in persons:
print(person)
4、查出联系人代码实现
# 查出联系人
def query_person():
name = input("请输入需要查找的姓名:")
for person in persons:
if name == person["name"]:
print(person)
5、删除联系人代码实现
# 删除联系人
def delete_person():
name = input("请输入需要查找的姓名:")
for person in persons:
if name == person["name"]:
persons.remove(person)6、运行效果
1. create person
2. list all persons
3. query person
4. delete person
5. quit
Enter a number(1-5): 1
请输入姓名:poloyy
请输入地址:广州荔湾区
请输入手机:13501111111
1. create person
2. list all persons
3. query person
4. delete person
5. quit
Enter a number(1-5): 2
{'name': 'poloyy', 'address': '广州荔湾区', 'phone': '13501111111'}
1. create person
2. list all persons
3. query person
4. delete person
5. quit
Enter a number(1-5): 3
请输入需要查找的姓名:poloyy
{'name': 'poloyy', 'address': '广州荔湾区', 'phone': '13501111111'}
1. create person
2. list all persons
3. query person
4. delete person
5. quit
Enter a number(1-5): 4
请输入需要查找的姓名:poloyy
1. create person
2. list all persons
3. query person
4. delete person
5. quit
Enter a number(1-5): 2
1. create person
2. list all persons
3. query person
4. delete person
5. quit
Enter a number(1-5): 5
Process finished with exit code 0
来源:https://www.cnblogs.com/poloyy/p/15110297.html


猜你喜欢
- 在安装SQL Server 2000 ,安装进程自动地为“BUILTIN\Administrators&rdqu
- 今天照着样例搞了下tensorboard,发现自己无法显示scalar,而graph却可以正常显示。出现这种情况就说明,tensorfboa
- 一、提要 随着 python 的普及,越来越多的功能可用于 python 编码。使用此功能可以用更少的行和更清晰的
- 1 什么是服务端渲染 SSRserver side render就是通过后端吐模板,而不是通过前端ajax获取数据,拼接字符串。2 为什么需
- 在平常的一些的小规模的数据的过滤、清洗过程中使用最多的就是正则表达式,但是随着数据规模的增大,正则表达式就显得有些心有余力不足了。正则表达式
- 在使用Ajax过程中,有时候总会遇到一些难题,浏览器兼容、编码、IE下的特殊处理等等,偶尔会搞的人头昏脑胀哭笑不得,这里列一些小贴士,或许有
- 错误号 错误信息5 &n
- QueueQueue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生
- int()是Python的一个内部函数 Python系统帮助里面是这么说的>>> help(int) Help
- 自己在学习过程中也遇到了类似的问题:比如,后台是想做成这样子的:但是实际则是这样的:解决方法:通过隐藏表单控件<input type=
- v-for除了可以循环数组,还可以循环对象。例子:<template><div> <div v-for=&qu
- 添加事件禁止选择、拖拽、右键(简单的禁止用户保存图片,但无法阻止用户打开控制台查看,或是直接抓包)将之转换为 canvas(让浏览器认为不是
- 场景:购物车增加商品数量同时更新bridge标志上的总商品个数,如果只是加上当前变化后的数量的话则之前原有的数量会被重新添加一遍造成计算错误
- global 标识用于在函数内部,修改全局变量的值。我们可以通过以下规则,来判定一个变量到底是在全局作用域还是局部作用域:变量定义在全局作用
- select nid,ntitle,nreadtimes,Row_number() over(order by nreadtimes des
- 1、if条件选择# coding:utf-8num = 23if num>2:print("dayu")if nu
- 边缘检测图像边缘是指图像中表达物体的周围像素灰度发生阶跃变化的那些像素集合。图像中两个灰度不同的相邻区域的交界处,必然存在灰度的快速过渡或称
- 本文主要是总结利用tensorflow实现迁移学习的基本步骤。所谓迁移学习,就是将上一个问题上训练好的模型通过简单的调整使其适用于一个新的问
- Python 通过微信邮件实现电脑关机,供大家参考,具体内容如下通过手机微信发送QQ邮件给sina邮箱,然后利用python的pop3定时检
- 前言JS为什么要用ajax来提交在使用from提交时,浏览器会向服务器发送选中的文件的内容而不仅仅是发送文件名。为安全起见,即file-up