案例驱动式Python学习--通讯录存取

2022-07-27,,,,

驱动案例

通讯录:要求打印出企业全部十名员工通讯录。(要求有文件相关操作)

内置函数

Python其他内置函数及使用方法参见菜鸟教程!!!

自定义函数

函数指被封装起来的、实现某种功能的一段代码。Python安装包、标准库中自带的函数统称为内置函数,用户自己编写的函数称为自定义函数,不管是哪种函数,其定义和调用方式都是一样的。

函数的定义

Python中使用关键字def定义函数。

def 函数名(参数列表)
函数体
[return 语句]

无参函数定义

def weather():    #无参数
      print("*" * 13)
      print("日期:4月8日")
      print("温度:14~28℃")
      print("空气状况:良")
      print("*" * 13)

带参函数定义

def modify_weather(today, temp, air_quality):    #有参数
      print("*"*13)
      print(f"日期:{today}")
      print(f"温度:{temp}")
      print(f"空气状况:{air_quality}")
      print("*" * 13)

函数的调用

定义好的函数直到被程序调用时才会执行。函数的调用格式如下:
函数名([参数列表])

实例应用(简易计算器)

熟练地定义函数
熟练地调用函数
分析:
本实例的计算器具有最基本的加、减、乘、除 4 项功能,可实现计算两个数的和、差、积、商。因此,这里可以定义一个包含两个参数的函数,第 1 个参数接收用户输入的第 1 个数,第 2 个参数接收用户输入的第 2 个数,该函数主要实现的是加、减、乘、除 4 项功能,执行哪种功能需用户输入相应的运算符,再根据该运算符计算结果即可。

def oper(parm_one, parm_two):
    operator = input('请选择要执行的运算符:+、-、*、/' + '\n')
    if operator == "+":
        print("计算结果为:", +parm_one + parm_two)
    elif operator == "-":
        print("计算结果为:", parm_one - parm_two)
    elif operator == "*":
        print("计算结果为:", parm_one * parm_two)
    elif operator == "/":
        if parm_two == 0:
            print('被除数不能为 0')
        else:
            print("计算结果为:", parm_one / parm_two)
    else:
         print("输入的运算符不正确!")
while 1:
    num_one = int(input('请输入第一个数:'))
    num_two = int(input('请输入第二个数:'))
    oper(num_one, num_two)
    ch = input("是否继续运算?(输入Y或者N)")
    if ch == 'N':
     break

参数传递

函数的参数传递是指将实际参数传递给形式参数的过程。根据不同的传递形式,函数的参数可分为:位置参数、关键字参数、默认参数、不定长参数。

位置参数

调用函数时,编译器会将函数的实际参数按照位置顺序依次传递给形式参数。

def division(num_one, num_two):
    print(num_one / num_two)
division(6, 2)
#此时6会传给num_one,2会传给num_two

关键字参数

关键字参数通过“形式参数=实际参数”的格式将实际参数与形式参数相关联,根据形参的名称进行参数传递。

def info(name, age, address):
     print(f'姓名:{name}')
     print(f'年龄:{age}')
     print(f'地址:{address}')
info(name="李婷婷", age=23, address="山东") 

默认参数

定义函数时可以指定形式参数的默认值。调用函数时,可分为以下两种情况:未给默认参数传值(使用参数的默认值)、给默认参数传值(使用实际参数的值)。

def connect(ip, port=3306):
    print(f"连接地址为:{ip}")
    print(f"连接端口号为:{port}")
    print("连接成功")
connect('127.0.0.1')    #127.0.0.1传给ip
connect(ip='127.0.0.1', port=8080)    #127.0.0.1传给ip,8080传给port

不定长参数

若要传入函数中的参数的个数不确定,可以使用不定长参数。不定长参数也称可变参数,此种参数接收参数的数量可以任意改变。

def 函数名([formal_args,] *args, **kwargs):
       "函数_文档字符串"
       函数体
       [return语句]
#*args和**kwargs都是不定长参数,它们可搭配使用,亦可单独使用
*args用法

不定长参数 * args用于接收不定数量的位置参数,调用函数时传入的所有参数被*args接收后以元组形式保存。示例:

**kwargs用法

**kwargs用于接收不定数量的关键字参数,调用函数时传入的所有参数被**kwargs接收后以字典形式保存。示例:

递归函数

python的递归算法思路与c语言相同,但python的语法更加简练。
递归的定义: 递归是一个函数过程在定义中直接调用自身的一种方法,它通常把一个大型的复杂问题层层转化为一个与原问题相似,但规模较小的问题进行求解。如果一个函数中调用了函数本身,这个函数就是递归函数。

递归求阶乘

def factorial(num):
    if num == 1:
        return 1
    else:
        return num * factorial(num - 1)

递归求斐波那契数列

def fibonacci(n):
    if n == 1 or n == 2:
        return 1
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)
num = int(input('请输入一个正整数: '))
for i in range(1, num + 1):
    print(fibonacci(i), end=' ')

变量

变量的作用域是指变量的作用范围。根据作用范围,Python中的变量分为局部变量与全局变量

局部变量

局部变量是在函数内定义的变量,只在定义它的函数内生效

def use_var():
    name = "xiaoke"  # 局部变量
    print(name)       # 函数内访问
    
use_var()
# print(name)           # 函数外访问报错  NameError: name 'name' is not defined

全局变量

全局变量是在函数外定义的变量,它在程序中任何位置都可以被访问.函数中只能访问全局变量,但不能修改全局变量。

若要在函数内部修改全局变量的值,需先在函数内使用关键字“global”进行声明。

count = 10
def use_var():
    global count    # 声明全局变量
    count = 0      #此时count变为0
use_var()
print(count)

文件操作

计算机中的文件能够持久保存程序运行时产生的数据。

打开文件

open()函数用于打开文件,该函数调用成功会返回一个文件对象。

open(file, mode='r', encoding=None)
  //file:表示待打开文件的文件名。
 //encoding:表示文件的编码格式。
 //mode:表示文件的打开模式。


单独使用:

搭配使用:

关闭文件

使用close()方法主动关闭不再使用的文件。

文件的读取

read()方法可以从指定文件中读取指定数据,其语法格式如下:

方式1-----文件对象.read([size])

文件对象.read([size])  
//参数size表示设置的读取数据的字节数,若该参数缺省,则一次读取指定文件中的所有数据。

//例如
file.read()

方式2-----文件对象. readline()

file.readline()
//每执行一次readline()方法便会读取文件中的一行数据。

方式3-----文件对象. readlines()

file.readlines()
//readlines()方法在读取数据后会返回一个列表,该列表中的每个元素对应着文件中的每一行数据。

小提示: read()(参数缺省时)和readlines()方法都可一次读取文件中的全部数据,但这两种操作都不够安全。因为计算机的内存是有限的,若文件较大,read()和readlines()的一次读取便会耗尽系统内存。为了保证读取安全,通常多次调用read()方法,每次读取size字节的数据。

文件数据写入

writelines()方法用于向文件中写入字符串序列,其语法格式如下:

文件对象. writelines([str])  //例如:file.writelines([str])

案例代码

def printMyAdress(myName,phone,adress):
    print(myName)
    print(phone)
    print(adress)
    print	
    wfile.write(myName+'\n') 	
    wfile.write(phone+'\n') 	
    wfile.write(adress+'\n')		
  	

wfile = open("D:/tongxunlu.txt", 'w') 
printMyAdress("周洪斌","13862345099","武汉市扬子街33号")
printMyAdress("王琦","18997543321","北京市宣武门西大街21号")
wfile.close()

总结反思

本次课主要补充介绍了Python常用的内置函数函数创建函数函数参数(单个、多个)递归函数变量列表文件的打开与关闭、文件的读写等。
知识点繁多啊!!你居然看完了。

本文地址:https://blog.csdn.net/k1507157/article/details/110239174

《案例驱动式Python学习--通讯录存取.doc》

下载本文的Word格式文档,以方便收藏与打印。