当前位置: 首页 > news >正文

day15 python(3)——python基础(完结!!)

【没有所谓的运气🍬,只有绝对的努力✊】

目录

1、函数

1.1 函数传参中的拆包

1.2 匿名函数的定义

1.3 匿名函数练习

1.4 匿名函数应用——列表中的字典排序

2、面向对象 OOP

2.1 面向对象介绍

2.2 类和对象

2.3 类的构成和设计

2.4 面向对象代码的步骤

2.5 面向对象——小案例

2.6 self

2.7 对象的属性操作

2.7.1  类外部添加

2.8 魔法方法

2.8.1  __init__  的使用

2.8.2 __str__ 的使用

2.8.3  __del__ 的使用

3、案例1——小明爱跑步

4、小结

5、作业

5.1  定义一个学生类

5.2 定义一个电脑

6、封装案例——存放家具

7、案例——登录页面(用于后续的自动化测试学习)

8、私有 和 公有

9、继承

9.1 继承定义

9.2 案例——继承

10、重写

11、多态

12、属性和方法

12.1 属性的划分

12.2 练习

12.3 方法的划分

12.3.1 案例——游戏类

12.4 补充概念——哈希、is

13、小结

14、文件

14.1 文件介绍

14.2 打开文件、读-写文件、关闭文件

14.3 文件——案例

14.3.1 写入文件

14.3.2 读文件

14.4 使用with open打开文件

14.5 按行读取文件内容

14.6 json文件的处理

14.6.1 json文件的语法

14.6.2 json 练习1

14.6.3 json 练习2

14.7 json写入

15、异常

15.1 异常的定义

15.2【捕获所有的异常】

15.3【捕获指定异常】

15.4 【捕获多个指定类型的异常】

15.5 【异常捕获的完整版本】

15.6  异常传递

16、小结

17、模块和包

17.1  模块的导入

17.2 模块的查找顺序

18、__name__的作用

18.1 练习

19、包


1、函数

1.1 函数传参中的拆包

想要将列表作为参数,传入函数中。   =====》 my_sum( *my_list ) 即可。

想要将字典作为参数,传入函数中。   =====》 my_sum( **my_list ) 即可。

1.2 匿名函数的定义

1.3 匿名函数练习

# 定义一个匿名函数,可以求两个数的乘积。
func1 = lambda a,b:a*b
print(func1(20,8))# 定义一个匿名函数,参数为字典,返回字典中键为age的值。
func2 = lambda a:a['age']
dic = {'name': '小明', 'age': 18}
print(func2(dic))

1.4 匿名函数应用——列表中的字典排序

my_list = [{'name': '小明', 'age': 18},{'name': '小李', 'age': 12},{'name': '小王', 'age': 28}]
my_list.sort(key=lambda x:x['age'])
print(my_list)
# [{'name': '小李', 'age': 12}, {'name': '小明', 'age': 18}, {'name': '小王', 'age': 28}]

字符串比大小:是根据ASCII比较的。 A<Z<a<z

ord( 字符 )   获取字符 的ASCII值。

chr( ASCII值 ) 获取对应的 字符。

2、面向对象 OOP

2.1 面向对象介绍

2.2 类和对象

2.3 类的构成和设计

          

2.4 面向对象代码的步骤

2.5 面向对象——小案例

   

'''需求:小猫爱吃鱼,小猫要喝水
'''
class Cat:def eat(self):print('爱吃鱼')def drink(self):print('爱喝水')cat = Cat()
cat.eat()

2.6 self

  

2.7 对象的属性操作

    

2.7.1  类外部添加

2.8 魔法方法

2.8.1  __init__  的使用

类名+() ==========>创建对象

'''需求:小猫爱吃鱼,小猫要喝水
'''
class Cat:def __init__(self,name,age):self.name = nameself.age = agedef getInfo(self):print(f'小猫的名字:{self.name},年龄:{self.age}')blue_cat = Cat("蓝猫",2)
blue_cat.getInfo()print('-'*30)black_cat = Cat('黑猫',3)
black_cat.getInfo()

 

2.8.2 __str__ 的使用

'''需求:小猫爱吃鱼,小猫要喝水
'''
class Cat:def __init__(self,name,age):self.name = nameself.age = agedef getInfo(self):print(f'小猫的名字:{self.name},年龄:{self.age}')def __str__(self):return f'{self.name}----{self.age}'blue_cat = Cat("蓝猫",2)
print(blue_cat)print('-'*30)black_cat = Cat('黑猫',3)
print(black_cat)

2.8.3  __del__ 的使用

3、案例1——小明爱跑步

     

class Person:def __init__(self,name,weight):self.name = nameself.weight = weightdef __str__(self):return f'姓名:{self.name}-----体重:{self.weight}'def run(self):print(f"{self.name}----跑步")self.weight -= 0.5def eat(self):print(f"{self.name}----吃完后")self.weight += 1person = Person('小明',75)
print(person)    # 姓名:小明-----体重:75person.run()
print(person)    # 姓名:小明-----体重:74.5person.eat()
print(person)    # 姓名:小明-----体重:75.5

4、小结

5、作业

5.1  定义一个学生类

class Student:def __init__(self, name, age):self.name = nameself.age =agedef __str__(self):return f'姓名:{self.name}, 年龄:{self.age}'def eat(self):print(f'{self.name} 要吃饭')def sleep(self):print(f'{self.name} 要睡觉')def addAge(self):print('过了一个年')self.age += 1xm = Student('小明',18)
xm.eat()
xm.sleep()
xm.addAge()
print(xm)print('-'*30)
xh = Student('小红',17)
xh.eat()
xh.sleep()
xh.addAge()
print(xh)

5.2 定义一个电脑

class Computer:def __init__(self,brand,price):self.brand = brandself.price = pricedef playMovie(self,movie_name):print(f"{self.brand} 电脑播放 {movie_name}")xm = Computer('小米',10000)
xm.playMovie("葫芦娃")apple = Computer('苹果',16999)
apple.playMovie("变形金刚")

6、封装案例——存放家具

# 房子类
class House:def __init__(self, name, total_area):self.name = name  # 户型self.total_area = total_area   # 总面积self.free_area = total_area  # 剩余面积self.item_list = []  # 家具名称列表def __str__(self):return f"户型:{self.name}---总面积:{self.total_area}----剩余面积:{self.free_area}---家具名称:{self.item_list}"def add_item(self,item):  # item 家具对象if self.free_area > item.area:self.item_list.append(item.name)self.free_area = self.total_area - item.areaprint(f'{item.name}  添加成功!')else:print('房间不足以放家具')# 家具类
class HouseItem:def __init__(self,name,area):self.name = nameself.area = areadef __str__(self):return f'{self.name} ---占地面积(平方米):{self.area}'bed = HouseItem('席梦思',4)
chest = HouseItem('衣柜',2)
table = HouseItem('餐桌',1.5)
print(bed)
print(chest)
print(table)print('-'*30)house = House('三室',109)
house.add_item(bed)
house.add_item(chest)
print(house)

7、案例——登录页面(用于后续的自动化测试学习)

class LoginPage:def __init__(self,username,password,code):self.username = usernameself.password = passwordself.code = codeself.btn = '登录'def login(self):print(f'1、输入用户名: {self.username}')print(f'2、输入密码: {self.password}')print(f'3、输入验证码: {self.code}')print(f'4、点击按钮: {self.btn}')loginPage = LoginPage('admin','112345','12hf')
loginPage.login()

8、私有 和 公有

9、继承

9.1 继承定义

9.2 案例——继承

class Animals:def eat(self):print(f'在吃')class Dog(Animals):def jiao(self):print('叫')class Quan(Dog):pass# animals = Animals()
# animals.eat()
dog = Dog()
dog.eat()
dog.jiao()
print('-'*30)
quan = Quan()
quan.eat()
quan.jiao()

 

10、重写

class Dog:def bark(self):print('汪汪汪叫')class Quan(Dog):def bark(self):    # 重写父类的bark()方法print('嗷嗷叫')quan = Quan()
quan.bark()

class Dog:def bark(self):print('汪汪汪叫')class Quan(Dog):def bark(self):    # 重写父类的bark()方法print('嗷嗷叫')super().bark()print('嗷嗷叫')quan = Quan()
quan.bark()

11、多态

12、属性和方法

12.1 属性的划分

       

12.2 练习

class Dog:my_count = 0    # 定义类属性def __init__(self,name):  # 定义实例属性,init方法中self.name = name# 每创建一个对象,就会调用init方法Dog.my_count += 1dog = Dog('小花')
dog = Dog('斑点狗')
print(Dog.my_count)   # 2         一般用 类名.属性名 调用。

12.3 方法的划分

12.3.1 案例——游戏类

import randomclass Game:# 类属性top_score = 0   # 记录游戏的最高分def __init__(self, name):self.name = namedef show_help(self):print('这是游戏的帮助信息')def show_top_score(self):print(f'游戏的最高分: {Game.top_score}')def start_game(self):random_num = random.randint(10, 100)  # 生成随机数10-100   (本次游戏得分)print(f'本次游戏得分----- {random_num}')if random_num > Game.top_score:Game.top_score = random_numgame = Game('小王')
game.start_game()
game.show_top_score()print('-'*30)
game.start_game()
game.show_top_score()
game.show_help()

【优化代码】

12.4 补充概念——哈希、is

13、小结

         

14、文件

14.1 文件介绍

14.2 打开文件、读-写文件、关闭文件

      


14.3 文件——案例

14.3.1 写入文件

#  1、打开文件
f = open('a.txt',mode='w',encoding='utf-8')# 2、写入文件
f.write('偷得浮生半日')# 3、关闭文件
f.close()

14.3.2 读文件

# 1、打开文件
f = open('a.txt', 'r',encoding='utf-8')
# 2、读文件
buff = f.read()
print(buff)
# 3、关闭文件
f.close()

14.4 使用with open打开文件

with open('a.txt', 'a', encoding='utf-8') as f:f.write('\n窗前明月光\n')f.write('\n疑是地上霜\n')

14.5 按行读取文件内容

# with open('b.txt',encoding='utf-8') as f:
#     while True:
#         buff = f.readline()
#         if buff == 0:
#             break
#         else:
#             print(buff, end='')with open('b.txt','r', encoding='utf-8') as f:for i in f:print(i,end='')

14.6 json文件的处理

14.6.1 json文件的语法

【json文件】

{"name": "小明","age": 18,"isMen": true,"like": ["听歌","游戏","购物","吃饭","睡觉","打豆豆"],"address": {"country": "中国","city": "上海"}
}
import jsonwith open('info.json','r',encoding='utf-8') as f:result = json.load(f)print(result)print(result['name'])print(result['address']['city'])

14.6.2 json 练习1

[{"name": "小明","age": 18,"isMen": true,"like": ["听歌","游戏","购物","吃饭","睡觉","打豆豆"],"address": {"country": "中国","city": "上海"}},{"name": "小红","age": 17,"isMen": false,"like": ["听歌","学习","购物"],"address": {"country": "中国","city": "北京"}}
]
import jsonwith open('info1.json','r',encoding='utf-8') as f:f_list = json.load(f)for i in f_list:print(i['name'], i['age'], i['address']['city'])

14.6.3 json 练习2

import json
newList = []
with open('login.json','r',encoding='utf-8') as f:info_list = json.load(f)for item in info_list:newList.append((item['username'],item['password'],item['expect']))print(newList)
# [('admin', '123456', '登录成功'), ('root', '123456', '登录失败'), ('admin', '1234567', '登录失败')]

14.7 json写入

import jsonlist_json = [('admin', '123456', '登录成功'), ('root', '123456', '登录失败'), ('admin', '1234567', '登录失败')]
with open('info4.json','w',encoding='utf-8') as f:# json.dump(list_json,f)# json.dump(list_json, f,ensure_ascii=False)   # 显示中文json.dump(list_json,f,ensure_ascii=False, indent=2)  # 显示缩进

 

15、异常

15.1 异常的定义


15.2【捕获所有的异常】

try:num = input("请输入数字:")num = int(num)print('num===', num)
except:print("异常,请输入数字!!")

15.3【捕获指定异常】

try:num = input("请输入数字:")num = int(num)print('num===', 10/num)
except ValueError:print("异常,请输入数字!!")

15.4 【捕获多个指定类型的异常】

try:num = input("请输入数字:")num = int(num)print('num===', 10/num)
except ValueError:print("异常,请输入数字!!")
except ZeroDivisionError:print('除数不能为0')

15.5 【异常捕获的完整版本】

【常用下方的代码】

15.6  异常传递

16、小结

17、模块和包

17.1  模块的导入

           


快捷导入包:


17.2 模块的查找顺序

18、__name__的作用

18.1 练习

19、包


今天暂时到这里啦~

相关文章:

day15 python(3)——python基础(完结!!)

【没有所谓的运气&#x1f36c;&#xff0c;只有绝对的努力✊】 目录 1、函数 1.1 函数传参中的拆包 1.2 匿名函数的定义 1.3 匿名函数练习 1.4 匿名函数应用——列表中的字典排序 2、面向对象 OOP 2.1 面向对象介绍 2.2 类和对象 2.3 类的构成和设计 2.4 面向对象代码…...

/:087启动游戏时提示丢失”d3dx···.dll””VCOMP···.dll”

/:087启动游戏时提示丢失”d3dx.dll””VCOMP.dll”或遇到应用程序无法正常启动&#xff08;0xc000007b&#xff09;和游戏有图像没有声音等情况。 主要是因为系统缺少大型游戏/软件运行的必备组件&#xff0c;这些组件有DirectX&#xff0c;Visual C2010&#xff0c;2012&…...

利用PHP和phpSpider进行图片爬取及下载

利用PHP和phpSpider进行图片爬取及下载&#xff0c;可以遵循以下步骤。phpSpider是一个开源的PHP爬虫框架&#xff0c;它可以帮助你轻松地抓取网页内容。以下是一个基本的步骤指南&#xff1a; 1. 安装phpSpider 首先&#xff0c;你需要确保你已经安装了Composer&#xff08;…...

企业架构划分探讨:业务架构与IT架构的利与弊

在企业架构&#xff08;EA&#xff09;的江湖里&#xff0c;大家一直致力于如何把企业的复杂性简化成有条有理的架构蓝图。有人选择把企业架构分成业务架构和IT架构&#xff0c;而IT架构又进一步细分为应用架构、数据架构和技术架构。但一提到这种划分方式&#xff0c;总有人跳…...

Java设计模式 —— 【结构型模式】桥接模式详解

前言 现在有一个需求&#xff0c;需要创建不同的图形&#xff0c;并且每个图形都有可能会有不同的颜色。 首先我们看看用继承来实现&#xff1a; 我们可以发现有很多的类&#xff0c;假如我们再增加一个形状或再增加一种颜色&#xff0c;就需要创建更多的类。 试想&#xf…...

MySQL学习之DDL操作

目录 数据库的操作 创建 查看 选择 删除 修改 数据类型 表的创建 表的修改 表的约束 主键 PRIMARY KEY 唯一性约束 UNIQUE 非空约束 NOT NULL 外键约束 约束小结 索引 索引分类 常规索引 主键索引 唯一索引 外键索引 优点 缺点 视图 创建 删除 修改…...

游戏AI实现-寻路算法(A*)

A*&#xff08;A-star&#xff09;是一种图遍历和寻路算法&#xff0c;由于其完整性、最优性和最佳效率&#xff0c;它被用于计算机科学的许多领域。给定一个加权图、一个源节点和一个目标节点&#xff0c;该算法将找到从源到目标的最短路径&#xff08;相对于给定的权重&#…...

spring学习(spring的IoC思想、spring容器、spring配置文件、依赖注入(DI)、BeanProxy机制(AOP))

目录 一、spring-IoC。 &#xff08;1&#xff09;spring框架。(诞生原因及核心思想) 1、为什么叫框架&#xff1f; 2、spring框架诞生的技术背景。 &#xff08;2&#xff09;控制反转&#xff08;IoC&#xff09;。 &#xff08;3&#xff09;spring的Bean工厂和IoC容器。 &a…...

谁说C比C++快?

看到这个问题&#xff0c;我我得说&#xff1a;这事儿没有那么简单。 1. 先把最大的误区打破 "C永远比C快" —— 某位1990年代的程序员 这种说法就像"自行车永远比汽车省油"一样荒谬。我们来看个例子&#xff1a; // C风格 char* str (char*)malloc(100…...

GEE+本地XGboot分类

GEE本地XGboot分类 我想做提取耕地提取&#xff0c;想到了一篇董金玮老师的一篇论文&#xff0c;这个论文是先提取的耕地&#xff0c;再做作物分类&#xff0c;耕地的提取代码是开源的。 但这个代码直接在云端上进行分类&#xff0c;GEE会爆内存&#xff0c;因此我准备把数据下…...

OpenCV相机标定与3D重建(24)计算两个二维点集之间的最佳仿射变换矩阵(2x3)函数estimateAffine2D()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算两个二维点集之间的最优仿射变换&#xff0c;它计算 [ x y ] [ a 11 a 12 a 21 a 22 ] [ X Y ] [ b 1 b 2 ] \begin{bmatrix} x\\ y\\ \en…...

UIP协议栈 TCP通信客户端 服务端,UDP单播 广播通信 example

文章目录 1. TCP通信 客户端&#xff08;关键配置&#xff09;2. TCP 服务端配置3. UDP 点播通信4. UDP 广播通信5. UIP_UDP_APPCALL 里边的处理example6. TCP数据处理 &#xff0c;UIP_APPCALL调用的函数 UIP_APPCALL TCP的数据都在这个宏定义的函数里进行数据处理的 UDP 数据…...

【NoSQL系列】为什么要使用Redis?

第一次知道Redis是以前准备面试的时候&#xff0c;只知道是用来缓存数据的。随着这几年的工作&#xff0c;对软件的认识从盲人摸象到睁眼看世界。 在常用的软件架构评价模型中&#xff0c;性能、可用性、安全性和可维护性是常见的评价属性&#xff0c;客户总希望系统响应又快有…...

MySQL Explain 分析SQL语句性能

一、EXPLAIN简介 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句&#xff0c;从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 &#xff08;1&#xff09; 通过EXPLAIN&#xff0c;我们可以分析出以下结果&#xff1a; 表的读取顺序数据读取…...

IIS部署程序https是访问出现403或ERR_HTTP2_PROTOCOL_ERROR

一、说明 在windows server 2016中的IIS程序池里部署一套系统&#xff0c;通过https访问站点&#xff0c;同时考虑到安全问题以及防攻击等行为&#xff0c;就用上了WAF云盾功能&#xff0c;能有效的抵挡部分攻击&#xff0c;加强网站的安全性和健壮性。 应用系统一直能够正常…...

学技术学英文:代码中的锁:悲观锁和乐观锁

本文导读&#xff1a; 1. 举例说明加锁的场景&#xff1a; 多线程并发情况下有资源竞争的时候&#xff0c;如果不加锁&#xff0c;会出现数据错误&#xff0c;举例说明&#xff1a; 业务需求&#xff1a;账户余额>取款金额&#xff0c;才能取钱。 时间线 两人共有账户 …...

青少年编程与数学 02-004 Go语言Web编程 02课题、依赖管理

青少年编程与数学 02-004 Go语言Web编程 02课题、依赖管理 课题摘要:一、项目结构各目录说明&#xff1a; 二、依赖项三、依赖管理任务四、依赖管理步骤1. 初始化Go Modules项目2. 添加依赖3. 指定依赖版本4. 更新依赖5. 清理未使用的依赖6. 离线工作7. 模块隔离8. 可重现构建 …...

MyBatis写法汇总

Mybatis写法汇总 1. 批量操作 1.1 批量插入 <insert id"batchInsert" parameterType"java.util.List">INSERT INTO user (username, password, create_time) VALUES<foreach collection"list" item"item" separator"…...

【Linux学习】十五、Linux/CentOS 7 用户和组管理

文章目录 一、组的管理1.组的创建格式&#xff1a;参数&#xff1a; 2.组的删除格式&#xff1a;参数&#xff1a; 3.组的属性修改格式&#xff1a;参数&#xff1a; 4.查看组的信息①cat /etc/group 命令②getent group 命令③仅显示系统中所有组名 二、用户的管理①超级用户&…...

三维无人机航迹算法的目标函数如何确定

一、定义目标函数 在三维无人机航迹算法中,目标函数的确定通常基于具体的任务需求和飞行约束。以下是一个简单的例子,展示了如何为三维无人机航迹规划定义一个目标函数。 例子:最小化飞行时间和避障的三维无人机航迹规划 1.任务描述:无人机需要从起点飞到终点,同时避开一些…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...