Python 函数简单易理解版

目录
  • Python 函数
    • 一、什么是模块化程序设计?
      • 1、 编写流程——自顶向下
      • 2、函数在模块化设计的作用
    • 二、实战
      • 1、功能简介
      • 2、通讯录功能简介
      • 3、主程序入口
      • 4、主程序包含以下功能
      • 5、用什么数据结构来描述一个联系人
      • 6、用什么数据结构来描述一个通讯录
    • 三、函数实现
      • 1、主函数代码实现
      • 2、添加联系人代码实现
      • 3、列出联系人代码实现
      • 4、查出联系人代码实现
      • 5、删除联系人代码实现
      • 6、运行效果

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

到此这篇关于Python 函数简单易理解版的文章就介绍到这了,更多相关Python 函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 关于Python OS模块常用文件/目录函数详解

    模块:包含定义函数和变量的python文件,可以被别的程序引入. os模块是操作系统接口模块,提供了一些方便使用操作系统相关功能函数,这里介绍下os模块中对于文件/目录常用函数和使用方法. 1. 返回当前文件目录:getcwd() 2.改变工作目录:chdir(path) 将当前工作目录更改为path的目录 3. 更改当前进程根目录:chroot(path) 4.列举出目录中的文件名:listdir(path) 返回列表,包含了path所有文件和目录名称,排序无顺序 5.创建目录:mkdir(p

  • python之多种方式传递函数方法案例讲解

    这篇文章主要介绍了python进阶教程之函数参数的多种传递方法,包括关键字传递.默认值传递.包裹位置传递.包裹关键字混合传递等,需要的朋友可以参考下 我们已经接触过函数(function)的参数(arguments)传递.当时我们根据位置,传递对应的参数.我们将接触更多的参数传递方式. 回忆一下位置传递: def f(a,b,c): return a+b+c print(f(1,2,3)) 在调用f时,1,2,3根据位置分别传递给了a,b,c. 关键字传递 有些情况下,用位置传递会感觉比较死板.

  • python imread函数详解

    Python 中各种imread函数的区别与联系 最近一直在用python做图像处理相关的东西,被各种imread函数搞得很头疼,因此今天决定将这些imread总结一下,以免以后因此犯些愚蠢的错误.如果你正好也对此感到困惑可以看下这篇总结.当然,要了解具体的细节,还是应该 read the fuck code和API document,但貌似python的很多模块文档都不是很全,所以只能多看代码和注释了. 先来看看常用的读取图片的方式: PIL.Image.open scipy.misc.imr

  • python中map()函数使用方法详解

    目录 总结 先看map()函数底层封装介绍: 注释中翻译为: map(func, *iterables)--> map对象 创建一个迭代器,使用来自的参数计算函数每个迭代器.当最短的迭代器耗尽时停止. 作用: map(func, lst) ,将传⼊的函数变量 func 作⽤到 lst 变量的每个元素中,并将结果组成新的列表 (Python2)/ 迭代器(Python3) 返回. 注意: map()返回的是一个迭代器,直接打印map()的结果是返回的一个对象. 示例代码1: lst = ['1',

  • Python如何使用print()函数输出格式化字符串

    目录 前言 格式化输出字符串类型的变量 格式化输出整数型变量 格式化输出浮点型变量 格式化输出多个变量 总结 前言 print()函数用来将信息输出到控制台 如果希望输出文字信息的同时,一起输出数据,可以使用格式化操作符%,格式化操作符负责处理字符串中的格式,需要注意的是,链接不同的字符时,根据不同类型的数据需要使用不同的格式化字符 常用的格式化字符有四种 %s -- 字符串类型 %d -- 整数类型(%05d,指定整数的显示位,不足的位数用0补齐) %f -- 浮点型(%.2f,指定小数点后显

  • Python max函数中key的用法及原理解析

    一.背景 起源于一个问题:怎样找到字符串中出现次数最多的字符 其实使用max函数就能很轻松的解决这个问题: 代码: str1 = "AAAaaa8888899sssss" print(max(str1, key=str1.count)) 结果:8 二.原理 max()函数用于获得给定的可迭代对象中的最大值. key是max()函数的一个参数,它辅助max函数找到最大元素.当max() 函数中有 key 参数时,求的是 value 的最大值,当没有 key 参数时,求的是 key 的最大

  • Python面向对象之内置函数相关知识总结

    Python内置函数 1. classmethod.staticmethod.property . 上述三个内置函数在文章(Python进阶--面向对象之成员)的方法和属性中已经详细介绍使用,可以返回浏览,具体地址: 2. callable,是否可在后面加括号执行. 函数 def func(): pass print( callable(func) ) # True 类 class Foo(object): pass print( callable(Foo) ) # True 类中具有__cal

  • python中super()函数的理解与基本使用

    目录 前言 super的用法 super的原理 Python super()使用注意事项 混用super与显式类调用 不同种类的参数 总结 前言 Python是一门面向对象的语言,定义类时经常要用到继承,在类的继承中,子类继承父类中已经封装好的方法,不需要再次编写,如果子类如果重新定义了父类的某一方法,那么该方法就会覆盖父类的同名方法,但是有时我们希望子类保持父类方法的基础上进行扩展,而不是直接覆盖,就需要先调用父类的方法,然后再进行功能的扩展,这时就可以通过super来实现对父类方法的调用.

  • python机器学习高数篇之函数极限与导数

    不知道大家有没有类似的经历,斗志满满地翻开厚厚的机器学习书,很快被一个个公式炸蒙了. 想要学习机器学习算法,却很难看的懂里面的数学公式,实际应用只会调用库里的函数,无法优化算法. 学好机器学习,没有数学知识是不行的.数学知识的积累是一个漫长的过程,罗马也不是一夜建成的. 如果想要入门机器学习,数学基础比较薄弱,想打牢相关数学基础,可以关注笔者,一起学习(数学大佬也可以来扫一眼python代码)~ 接下来我们以高数(同济第七版)课后习题为例,使用python语言来求解函数和导数的习题. 这样大家做

  • python用函数创造字典的实例讲解

    1.使用dict()函数,通过其他映射(比如其他字典)或者键,值对的序列建立字典. dict1 = dict(a='a', b='b', t='t') # 传入关键字 print(dict1) dict2 = dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 映射函数方式来构造字典 print(dict2) dict3 = dict([('one', 1), ('two', 2), ('three', 3)]) # 可迭代对象方式来构造字典 prin

  • Python函数中的不定长参数相关知识总结

    一. 不定长位置参数 # 在定义函数参数时,可以在形参的前面加*,该形参将获取所有的位置实参 # 它会将所有的实参保存在一个元组中 def fn(*args): print("args=", args) print("args type:", type(args)) # 带*形参和其他参数配合使用 def fn1(a, b, *args): print(a) print(b) print(args) # 下面这两种写法可以,但是在传实参的时候要注意 def fn2(

随机推荐