步骤介绍
- 函数定义与实现
- 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 {}
五、课程总结
课程总结
课程总结
- 函数的介绍
- 函数参数与返回值
- 函数应用