Python-Level1-day08:函数
0 作业与复习
""" dict_employees = {1001: {"did": 9002, "name": "师父", "money": 60000},1002: {"did": 9001, "name": "孙悟空", "money": 50000},1003: {"did": 9002, "name": "猪八戒", "money": 20000},1004: {"did": 9001, "name": "沙僧", "money": 30000},1005: {"did": 9001, "name": "小白龙", "money": 15000}, } # 部门列表 list_departments = [{"did": 9001, "title": "教学部"},{"did": 9002, "title": "销售部"},{"did": 9003, "title": "品保部"}, ] """ # 员工字典(员工编号 部门编号 姓名 工资) dict_employees = {1001: {"did": 9002, "name": "师父", "money": 60000},1002: {"did": 9001, "name": "孙悟空", "money": 50000},1003: {"did": 9002, "name": "猪八戒", "money": 20000},1004: {"did": 9001, "name": "沙僧", "money": 30000},1005: {"did": 9001, "name": "小白龙", "money": 15000}, } # 部门列表 list_departments = [{"did": 9001, "title": "教学部"},{"did": 9002, "title": "销售部"},{"did": 9003, "title": "品保部"}, ] # 1. 打印所有员工信息, # 格式:xx的员工编号是xx,部门编号是xx,月薪xx元. for key, value in dict_employees.items():print(f"{value['name']}的员工编号是{key},部门编号是{value['did']},月薪{value['money']}元") print("1-----------------------") # 2. 打印所有月薪大于2w的员工信息, # 格式:xx的员工编号是xx,部门编号是xx,月薪xx元. for key, value in dict_employees.items():if value["money"] >= 20000:print(f"{value['name']}的员工编号是{key},部门编号是{value['did']},月薪{value['money']}元") print("2-----------------------") # 3. 在部门列表中查找编号最小的部门 min_depart = list_departments[0] for item in list_departments[1:]: # 切片不好if item["did"] < min_depart["did"]:min_depart = item print(min_depart) print("3-----------------------") # 4. 根据部门编号对部门列表降序排列 for i in range(len(list_departments) - 1):for j in range(i + 1, len(list_departments)):if list_departments[i]["did"] < list_departments[j]["did"]:list_departments[i], list_departments[j] = list_departments[j], list_departments[i] print(list_departments)
列表推导式嵌套
语法:列表推导式嵌套--2层循环 变量 = [表达式 for 变量 1 in 可迭代对象 1 for 变量 2 in 可迭代对象 2]
传统写法: result = [] for r in ["a", "b", "c"]: for c in ["A", "B", "C"]: result.append(r + c)
推导式写法: result = [r + c for r in list01 for c in list02]
"""列表推导式嵌套--2层循环 """ list01 = ["香蕉", "苹果", "荔枝"] list02 = ["牛奶", "咖啡", "雪碧"] list03 = [] for item1 in list01:for item2 in list02:list03.append(item1 + item2) print(list03) result = [item1 + item2 for item1 in list01 for item2 in list02] print(result) # 练习:3个色子所有结果 result1 = [str(item1) + "-" + str(item2)+"-"+str(item3) for item1 in range(1, 7) for item2 in range(1, 7) for item3 in range(1, 7)] print(result1)
1 函数
函数 function
pycharm 快捷键
Ctrl + P :参数信息(在方法中调用参数)
Ctrl + Q :快速查看文档
定义
用于封装一个特定的功能,表示一个功能或者行为。
函数是可以重复执行的语句块, 可以重复调用。
作用:提高代码的可重用性和可维护性(代码层次结构更清晰)。
定义函数
语法:
def 函数名(形式参数):
函数体
说明:
def 关键字:全称是 define,意为”定义”。
函数名:对函数体中语句的描述,规则与变量名相同。
形式参数:方法定义者要求调用者提供的信息。
函数体:完成该功能的语句。
函数的第一行语句建议使用文档字符串描述函数的功能与参数。
调用函数
语法:函数名(实际参数)
说明:根据形参传递内容。
返回值
定义:
方法定义者告诉调用者的结果。
语法:
return 数据
说明:
return 后没有语句,相当于返回 None。
函数体没有 return,相当于返回 None。
"""函数: 做法+用法 Ctrl + P 参数信息(在方法中调用参数)Ctrl + Q 快速查函数 = ctrl + 左键 跳转到函数源码 return 后没有语句,相当于返回 None。函数体没有 return,相当于返回 None 看函数体内部调试:F7 """ def life(count):"""用于打印东西:param count: 参数输入次数:return: 没有返回值哦"""for __ in range(count):print("起床")print("吃饭")print("工作")print("睡觉") life(3) # 函数只有调用才执行,否者不执行 # 练习:打印一维列表 list01 = [1, 2, 3, 4, 5] def print_list(listx):for item in listx:print(item) print_list(list01) # print_list(1)报错 因为python变量没有数据类型,因此不检查传入的参数是否符合要求
""" 练习:定义函数, 根据总两数, 计算几斤零几两.提示:使用容器包装需要返回的多个数据 """ def cal_weight(total_liang):jin = total_liang // 16liang = total_liang % 16return jin, liang # 返回容器,而不是多个结果 print(cal_weight(100))
"""多函数相互调用1.两个函数名称相同,就近原则调用2.程序结构:上面定义函数,即使相互调用顺序也无所谓下面调用函数 """ print("-----定义函数-----") def repeat_attack(count):for __ in range(count):attack() def attack():print("直拳")print("钩拳") print("----调用函数----") repeat_attack(3)
函数内存图
程序执行函数定义时,将函数代码变成二进制加载到代码区域;
程序调用函数会开辟一块空间(栈帧),存储在函数中定义的变量;
函数执行后,立即释放这些栈帧空间。
p2[0] = 500 有一个cpu寻址的动作,因此把列表里面的数据修改了;
若写成p2=500,那么p2就单独指向数字500,不再指向列表。
data03的数据自然改不了。实参给形参传递不是变量而是数据。
可变/不可变类型在传参时的区别
不可变类型参数有:数值型(整数,浮点数);布尔值 bool;None 空值;字符串 str;元组 tuple
可变类型参数有:列表 list;字典 dict;集合 set
传参说明:不可变类型的数据传参时,函数内部不会改变原数据的值。
可变类型的数据传参时,函数内部可以改变原数据。(cpu寻址实现)
因此:传入可变数据,函数内部修改可变数据,无需通过return返回结果。
# 练习 # 3:根据下列代码,创建降序排列函数。 # shiif +F6 改所有变量名称 list01 = [5, 15, 25, 35, 1, 2] def sort_down(list01):for r in range(len(list01) - 1):for c in range(r + 1, len(list01)):if list01[r] < list01[c]:list01[r], list01[c] = list01[c], list01[r] sort_down(list01) print(list01)
作业 1. 三合一 2. 当天练习独立完成 3. 容器综合训练 list_commodity_infos = [{"cid": 1001, "name": "屠龙刀", "price": 10000},{"cid": 1002, "name": "倚天剑", "price": 10000},{"cid": 1003, "name": "金箍棒", "price": 52100},{"cid": 1004, "name": "口罩", "price": 20},{"cid": 1005, "name": "酒精", "price": 30}, ] # 订单列表 list_orders = [{"cid": 1001, "count": 1},{"cid": 1002, "count": 3},{"cid": 1005, "count": 2}, ] (1)定义函数,打印所有商品信息,格式:商品编号xx,商品名称xx,商品单价xx. (2)定义函数,打印商品单价小于2万的商品信息 (3)定义函数,打印所有订单中的商品信息,格式:商品名称xx,商品单价:xx,数量xx. (4)查找单价最高的商品 (5)根据单价升序排列 4. 定义函数,计算社保缴纳费用.salary_before_tax = float(input("请输入税前工资:"))social_insurance = salary_before_tax * (0.08 + 0.02 + 0.002 + 0.12) + 3print("个人需要缴纳社保费用:" + str(social_insurance)) 5. 定义函数,根据颜色(RGBA),打印描述信息"R" -> "红色""G" -> "绿色""B" -> "蓝色""A" -> "透明度" 6. 定义函数,在数字列表中获取最小值 7. 定义函数,对数字列表进行升序排列 作用域;函数实参形参传递;
Python-Level1-day08:函数相关推荐
- Python菜鸟入门:day08函数概念
写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 传送门: day01基础知识 day02知识分类 day03 ...
- Python学习Day08
Python学习Day08 字符串 II 判断和检测 startswith(prefix[,start[,end]]):用于判断参数所指定的字符串是否出现在字符串的起始位置 endswith(pref ...
- python turtle画滑稽_使用python的turtle函数绘制一个滑稽表情的方法
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...
- python的popen函数
最近了解了一下python的popen函数的使用,主要是用来执行linux命令 函数使用 使用之前需要导入import os模块 使用方式: os.popen(cmd) 返回值: 返回一个文件句柄 i ...
- python中pop函数_Python中的Pop函数
python中pop函数 什么是弹出功能? (What is the pop function?) The method pop() removes and returns the last elem ...
- Python培训:Python有哪些函数?你了解几种?
本期小编要为大家带来的Python教程就是关于Python函数这方面的,我们都知道Python函数,一般是指组织好的.可重复使用的.用来实现单一或相关联功能的代码段,Python函数包含系统中自带的一 ...
- 详细记录python的range()函数用法
详细记录python的range()函数用法 使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的sl ...
- 技术图文:举例详解Python中 split() 函数的使用方法
背景 这篇文章主要介绍Python中的split()函数的使用方法,split()函数通常用于将字符串切片并转换为列表,需要的朋友可以参考一下. 技术分析 Python中有split()和os.pat ...
- 刻意练习:Python基础 -- Task05. 函数与Lambda表达式
背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...
- 为什么Python没有main函数?
作者 | 豌豆花下猫 来源 | Python猫(ID:python_cat) 众所周知,Python中没有所谓的main函数,但是网上经常有文章提到" Python的main函数" ...
最新文章
- Pytorch:transforms的二十二个方法
- boost::math::inverse_gamma_distribution用法的测试程序
- Go语言 中文分词技术使用技巧(一)
- js javascript UTF-8 GB2312编码转换
- 解决在Win2008下IIS7不显验证码的问题
- 猪肉上的红章和蓝章有啥不同?| 今日趣图
- html中把句子往右边弄一点咋办,CSS上的左,中,右对齐方法,可以在一行上混合...
- 如何在Mac OS X 10.6.4上卸载Python 2.7?
- wildfly access log 开启
- BootStrap:基础学习
- Markdown中表格中内容换行、左对齐等基本操作
- 【Linux内核分析与应用-陈莉君】进程的调度
- 彻底解决IE9 文本框无法输入文字,IE窗口闪烁问题(亲测)
- 高斯消元法(matlab)
- FAT文件系统(stm32)
- 达梦数据库的替代(instead of )触发器使用一例
- 获取控制台程序的返回值
- 血氧仪方案功能及使用方法介绍
- 最近在写一款斗地主游戏,写了个癞子匹配顺子的算法
- 逐梦C++之四:四种强制类型转换