步骤介绍

  • 函数定义与实现
  • 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 {}



 五、课程总结



    课程总结




   课程总结



  • 函数的介绍
  • 函数参数与返回值
  • 函数应用