步骤介绍
- 函数定义与实现
- python模块与包的介绍及使用
- python的标准模块与第三方模块
- 模块案例
- python中的常用高阶函数
- 文件读写
第一课、函数的定义与实现
一、课程介绍
课时介绍
- 函数的介绍
- 函数的参数
- 函数应用
课程目标
- 掌握函数的作用和如何定义函数
- 理解函数中的参数传递,实参和形参的区别
- 理解函数中的返回值,接收函数的返回值
- 实现我们自己的函数,并完成实战
二、什么是函数(重点章节,一定要回看)
函数的介绍与定义(本章重点一节,必知必会)
函数是什么
- 函数(Function)是实现具有特定功能的代码
- python中预置了很多内置函数
函数 | 功能 |
print() | 向控制台打印 |
input() | 接收控制台输入 |
format() | 格式化字符串 |
list() | 创建列表 |
lower() | 字符串转小写 |
upper() | 字符串转大写 |
- 开发者也可以创建自定义函数
函数的特点
- 隐藏实现功能的细节
- 重用代码
- 提高可读性,便于调试
- username = input(‘请输入用户名’)
- password = input(‘请输入密码’)
- print(‘用户名与密码错误,请重新输入’)
函数的定义
定义函数的语法:
def 函数名(形式参数(形参)1,形式参数2,...,形式参数n):
要运行的代码(函数体)
return输出的数据(返回值)
1 # 定义函数 2 # 函数用于代码的重用 3 def print_verse(): 4 # 函数体 5 print("锄禾日当午") 6 print("汗滴禾下土") 7 print("谁知盘中餐") 8 print("粒粒皆辛苦") 9 10 print_verse() 11 12 print("...") 13 14 print_verse() 15 16 print("...") 17 18 print_verse()
三、函数的使用技巧
3.1 什么是形参和实参(弄清楚两者的区别并会使用)
1 # 函数的形参与实参 2 def print_verse(verse_name, is_show_title, is_show_dynasty): 3 # 函数体 4 if verse_name == "悯农": 5 if is_show_title == True: 6 print("悯农-李绅") 7 if is_show_dynasty == True: 8 print("唐代") 9 print("锄禾日当午") 10 print("汗滴禾下土") 11 print("谁知盘中餐") 12 print("粒粒皆辛苦") 13 elif verse_name == "静夜思": 14 if is_show_title == True: 15 print("静夜思-李白") 16 if is_show_dynasty == True: 17 print("唐代") 18 print("床前明月光") 19 print("疑是地上霜") 20 print("举头望明月") 21 print("低头思故乡") 22 elif verse_name == "再别康桥": 23 if is_show_title == True: 24 print("再别康桥-徐志摩") 25 if is_show_dynasty == True: 26 print("民国") 27 print("轻轻地我走了") 28 print("正如我轻轻地来") 29 print("挥一挥手") 30 print("不带走一片云彩") 31 32 print_verse("悯农",True,False) 33 print("...") 34 print_verse("静夜思", True, True) 35 print("...") 36 print_verse("再别康桥", False, False)
3.2 函数的返回值
1 # 函数的返回值 2 # 参数是函数的输入数据,而返回值则是函数的输出结果。 3 # return不是必须的,但是return语句执行后,函数将中断执行 4 def calc_exchang_rate(amt, source, target): 5 if source == "CNY" and target == "USD": 6 # 6.7516 : 1 7 result = amt / 6.7516 8 #print(result) 9 #print("汇率计算成功") 10 return result 11 #print("汇率计算成功") 12 13 r = calc_exchang_rate(100,"CNY","USD") 14 print(r)
3.3 函数的三种使用技巧
函数的使用技巧
- 设置参数默认值
- 关键字传参
- 混合形式传参
1 # 函数的使用技巧-1 2 # 1.为参数设置默认值,只需要在形参后面增加 "= 具体值"即可 3 def calc_exchang_rate(amt, source = "CNY", target = "USD"): 4 print(target) 5 if source == "CNY" and target == "USD": 6 # 6.7516 : 1 7 result = amt / 6.7516 8 #print(result) 9 print("汇率计算成功") 10 return result 11 elif source =="CNY" and target == "EUR": 12 result = amt / 7.7512 13 return result 14 15 calc_exchang_rate(100) 16 17 # 2.以形参形式传参(关键字传参) 18 def health_check(name , age , height , weight , hr , hbp , lbp , glu): 19 print("您的健康状况良好") 20 21 health_check(name = "张三",height = 178,age = 32,weight = 85.5,hr = 70,hbp = 120,lbp = 80,glu = 4.3) 22 23 #3.混合形式传参 24 # *代表之后所有参数传参时必须使用关键字传参 25 def health_check1(name , age, * , height , weight , hr , hbp , lbp , glu): 26 print("您的健康状况良好") 27 28 health_check1("张三", 32,height = 178,weight = 85.5,hr = 70,hbp = 120,lbp = 80,glu = 4.3)
1 # 函数的使用技巧-2 2 # 1.序列传参 3 def calc(a,b,c): 4 return (a + b) * c 5 l=[1,5,10] 6 print(calc(*l)) 7 8 # 2. 字典传参 9 def health_check(name , age , height , weight , hr , hbp , lbp , glu): 10 print("您的健康状况良好") 11 12 param = {"name": "张三", "height": 178, "age": 32, "weight": 85.5,"hr": 70,"hbp": 120,"lbp": 80,"glu": 4.3} 13 health_check(**param) 14 15 # 3.返回值包含多个数据 16 def get_detail_info(): 17 dict1 = { 18 "employee" : [ 19 {"name": "张三", "salary": 1800}, 20 {"name": "李四", "salary": 2000} 21 ], 22 "device":[ 23 {"id": "8837120", "title": "XX笔记本"}, 24 {"id": "3839011", "title": "XX台式机"} 25 ], 26 "asset":[{},{}], 27 "project":[{},{}] 28 } 29 return dict1 30 print(get_detail_info()) 31 d=get_detail_info() 32 sal = d.get("employee")[0] 33 print(sal)
四、综合项目实战:YCI生活小助理
1 while (True): 2 print("1-双色球随机选号") 3 print("2-号码百事通") 4 print("3-明日天气预报") 5 print("0-结束程序") 6 c = input("请输入功能编号:") 7 if c == "1": 8 n = input("您要生成几注双色球号码:") 9 generate_unionlotto(n) 10 elif c == "2": 11 n = input("请输入您要查询的机构或者电话号码:") 12 find_phone(keyword=n) 13 elif c == "3": 14 n = input("请输入您要查询的城市:") 15 w = get_weather(n) 16 print(w) 17 if "name" in w: 18 print("{date} {name} {weather} {max}/{min} {wind}".format_map(w)) 19 else: 20 print("未找到{0}的天气数据".format(n)) 21 elif c == "0": 22 break 23 else: 24 print("您输入的功能编号有误,请重新输入") 25 print("============================") 26 print("感谢您的使用,祝您生活愉快,再见!")
4.1 实操实现:随机生成双色球
python中的随机数
- 随机数是指随机产生的数字
- python中通过random产生随机数
import random #产生一个1~16之间的随机整数 r = random.randint(1,16)
1 # 双色球随机选号 2 def gentate_unionlotto(number): 3 for j in range(0, int(number)): 4 for i in range(0, 6): 5 red = random.randint(1, 33) 6 print(red, end=" ") 7 blue = random.randint(1, 16) 8 print(blue)
4.2 实操实现:号码百事通功能
1 phone_numbers_str = "匪警[110],火警[119],急救中心[120],道路交通事故报警[122],水上求救专用电话[12395],天气预报[12121],报时服务[12117],森林火警[12119],电力服务[95598],红十字会急救台[999],公安短信报警[12110],通用紧急求救[112],信产部IP/网站备案[010-66411166]" 2 3 def find_phone(keyword): 4 phone_list = phone_numbers_str.split(",") 5 # print(phone_list) 6 for p in phone_list: 7 if p.find(keyword) != -1: 8 print(p)
4.3 实操实现:天气预报功能
1 weather_str="北京,2019年1月12日,多云,8°C,-4°C,南风3级~上海,2019年1月12日,小雨,9°C,6°C,北风2级~广州,2019年1月12日,阵雨转多云,22°C,15°C,持续无风向微风" 2 3 def get_weather(city): 4 city_list = weather_str.split("~") 5 # print(city_list) 6 weather_data = {} 7 for i in range(0, len(city_list)): 8 w = city_list[i].split(",") 9 # print(w) 10 weather = {"name": w[0], "date": w[1], "weather": w[2], "max": w[3], "min": w[4], "wind": w[5]} 11 # print(weather) 12 weather_data[weather["name"]] = weather 13 # print(weather_data) 14 if city in weather_data: 15 return weather_data.get(city) 16 else: 17 return {}
五、课程总结
课程总结
课程总结
- 函数的介绍
- 函数参数与返回值
- 函数应用