三、pyhon基础语法进阶篇(黑马程序猿-python学习记录)

news2024/9/24 15:21:20

黑马程序猿的python学习视频:https://www.bilibili.com/video/BV1qW4y1a7fU/

===============================================================

目录

一、文件操作

一、 文件的读取

1. 打开文件open()

2. 读取文件10个字节read(10)

3. 读取文件全部信息read()

4. 读取文件readLines()

5. 读取文件readLine()

6. for循环读取文件行

7. 文件的关闭close

8. with open

二、 文件的写入

​​​​​​​三、 文件的追加

二、 异常

1. 了解异常

​​​​​​​2. 异常的捕获try: except:

三、 python模块

四、 python包

​​​​​​​1. 新建python软件包

​​​​​​​2. 第三方包

​​​​​​​3. 第三方包下载

1. pip下载第三方包

2. pycharm下载第三方包

​​​​​​​五、 案例:str字符串反转和切片

一、 案例:读取文件信息

二、案例:追加文件信息

​​​​​​​六、 json

1. dumps:python数据转json

2. loads:json字符串转python数据

七、 类和对象

1. 类的成员方法

2. 构造方法__init__

3. 内置方法

4. 内置方法__str__

5. 内置方法__lt__ 大于和小于

6. 内置方法__le__ 大于等于和小于等于

7. 内置方法__eq__ ==

8. 私有成员变量和私有成员方法

八、 继承

1. 单继承语法

2. 单继承实例

3. 多继承语法

九、复写

​​​​​​​十、类型注解

1. 变量的类型注解

​​​​​​​2. 函数(方法)的类型注解

​​​​​​​3. Union类型

​​​​​​​十一、 多态


一、文件操作

一、 文件的读取

​​​​​​​1. 打开文件open()

f = open("D:/test.txt","r",encoding="UTF-8")

print(type(f))

<class '_io.TextIOWrapper'>

2. 读取文件10个字节read(10)

f = open("D:/test.txt","r",encoding="UTF-8")

print(type(f))

print(f"读取10个字节的结果:{f.read(10)}")

读取10个字节的结果:1111111111

3. 读取文件全部信息read()

f = open("D:/test.txt","r",encoding="UTF-8")

print(type(f))

print(f"读取全部内容的结果:{f.read()}")

读取全部内容的结果:111111111111111

22222222222222

33333333333333

4

5

6

7

8

4. 读取文件readLines()

f = open("D:/test.txt","r",encoding="UTF-8")

lines = f.readlines()

print(lines)

['111111111111111\n', '22222222222222\n', '33333333333333\n', '\n', '4\n', '5\n', '6\n', '7\n', '8\n']

5. 读取文件readLine()

一次读取一行

6. for循环读取文件行

f = open("D:/test.txt","r",encoding="UTF-8")

for line in f:

print(line)

111111111111111

22222222222222

33333333333333

4

5

6

7

8

7. 文件的关闭close

解除文件的占用

f = open("D:/test.txt","r",encoding="UTF-8")

f.close()

8. with open

执行完语句块 会自动close

with open("D:/test.txt","r",encoding="UTF-8")as f:

for line in f:

print(f"{line}")

111111111111111

22222222222222

33333333333333

4

5

6

7

8

二、 文件的写入

f= open("D:/test.txt","w",encoding="UTF-8")

f.write("hello");

f.close()

open的时候 使用w作为写入

如果没有路径会创建路径

如果有文件 那就覆盖原来的内容

写完之后 记得close一下或者flush一下 就能写进去

​​​​​​​三、 文件的追加

f= open("D:/test.txt","a",encoding="UTF-8")

f.write("world");

f.flush()

f.close()

二、 异常

1. 了解异常

​​​​​​​2. 异常的捕获try: except:

三、 python模块

导入模块

import time # 引入时间模块 导入python内置的time模块

time.sleep(1)

导入模块中的功能

from time import sleep # 引入时间模块 中的sleep功能

sleep(1)

导入模块中的全部功能

from time import * # 导入模块中的全部功能 *代表所有

sleep(1)

取别名

import time as a

a.sleep(1)

四、 python包

​​​​​​​1. 新建python软件包

新建成功后会有一个.py后缀的文件

如果有:代表是软件包

没有的话:代表是普通文件夹

​​​​​​​2. 第三方包

​​​​​​​3. 第三方包下载

1. pip下载第三方包

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy

2. pycharm下载第三方包

打开pycharm 右下角的python3.10点击后 选择解释器设置

就能看到刚才安装的第三方包numpy

点击加号 添加其他第三方包

搜索pandas,选中pandas,然后点击选项 输入

-i https://pypi.tuna.tsinghua.edu.cn/simple

点击 安装软件包

下方会出现一个安装的进度条

安装成功

​​​​​​​五、 案例:str字符串反转和切片

def str_reserse(s):

"""

功能是将字符串反转

:param s:将被反转的字符串

:return:反转后的字符串

"""

return s[::-1]

def substr(s,x,y):

"""

功能是按照给定的下标完成给定字符串的切片

:param s:即将被切片的字符串

:param x:切片的开始下标

:param y:切片的结束下标

:return:切片完成后的字符串

"""

return s[x:y]

if __name__ == '__main__':

print(str_reserse("123"))

print(substr("12345",1,2))

321

2

一、 案例:读取文件信息

def print_file_info(file_name):

"""

功能:将给定路径的文件内容输出到控制台

:param file_name:即将读取的文件路径

:return:None

"""

f=None

try:

f=open(file_name,"r",encoding="UTF-8")

content=f.read()

print(f"文件的全部内容如下:{content}")

except Exception as e:

print(f"程序出现异常:{e}")

finally:

if f: # 如果变量是None 表示false;如果有任何内容 就是true

f.close()

if __name__ == '__main__':

print_file_info("D:/aa.txt")

def print_file_info(file_name):

"""

功能:将给定路径的文件内容输出到控制台

:param file_name:即将读取的文件路径

:return:None

"""

f=None

try:

f=open(file_name,"r",encoding="UTF-8")

content=f.read()

print(f"文件的全部内容如下:{content}")

except Exception as e:

print(f"程序出现异常:{e}")

finally:

if f: # 如果变量是None 表示false;如果有任何内容 就是true

f.close()

if __name__ == '__main__':

print_file_info("D:/test.txt")

程序出现异常:[Errno 2] No such file or directory: 'D:/aa.txt'

文件的全部内容如下:helloworldworld

二、案例:追加文件信息

def append_to_file(file_name,data):

"""

功能:将指定的数据追加到指定的文件中

:param file_name:指定的文件路径

:param data:指定的数据

:return:None

"""

f = open(file_name,"a",encoding="UTF-8")

f.write(data)

f.write("\n")

f.close()

if __name__ == '__main__':

append_to_file("D:/test.txt","嘿嘿")

​​​​​​​六、 json

1. dumps:python数据转json

先导入json包

使用 json.dumps对python数据转成json

ensure_ascii=False:可以读取中文

"""

演示 json数据和python数据的互相转换

"""

import json

data=[

{"name":"张三","age":12},

{"name":"李四","age":15},

{"name":"王五","age":11}

]

json_str = json.dumps(data,ensure_ascii=False)

print(json_str)

[{"name": "张三", "age": 12}, {"name": "李四", "age": 15}, {"name": "王五", "age": 11}]

2. loads:json字符串转python数据

import json

s='[{"name": "张三", "age": 12}, {"name": "李四", "age": 15}, {"name": "王五", "age": 11}]'

python_list_data = json.loads(s)

print(python_list_data)

[{'name': '张三', 'age': 12}, {'name': '李四', 'age': 15}, {'name': '王五', 'age': 11}]

七、 类和对象

1. 类的成员方法

class Student:

name=None

age=None

def say_hi(self):

print(f"大家好,我是{self.name}")

stu = Student()

stu.age=11

stu.name="张三"

stu.say_hi()

大家好,我是张三。

2. 构造方法__init__

class Student:

name=None,

age=None

def __init__(self,name,age):

self.name=name

self.age=age

print("创建了一个student对象")

stu = Student("张三",19)

print(stu.name)

print(stu.age)

创建了一个student对象

张三

19

3. 内置方法

__init__

构造方法

__str__

字符串方法

__lt__

小于、大于符号比较

__le__

小于等于、大于等于符号比较

__eq__

==符号比较

4. 内置方法__str__

class Student:

name=None,

age=None

def __init__(self,name,age):

self.name=name

self.age=age

print("创建了一个student对象")

def __str__(self):

print("调用了__str__")

return f"Student对象,name{self.name},age:{self.age}"

stu = Student("张三",19)

print(stu)

print(str(stu))

创建了一个student对象

调用了__str__

Student对象,name:张三,age:19

调用了__str__

Student对象,name:张三,age:19

5. 内置方法__lt__ 大于和小于

class Student:

name=None,

age=None

def __init__(self,name,age):

self.name=name

self.age=age

print("创建了一个student对象")

def __str__(self):

print("调用了__str__")

return f"Student对象,name{self.name},age:{self.age}"

def __lt__(self,other):

return self.age<other.age

stu1 = Student("张三",19)

stu2 = Student("李四",20)

print(stu1<stu2)

print(stu1>stu2)

创建了一个student对象

创建了一个student对象

True

False

6. 内置方法__le__ 大于等于和小于等于

class Student:

name=None,

age=None

def __init__(self,name,age):

self.name=name

self.age=age

print("创建了一个student对象")

def __str__(self):

print("调用了__str__")

return f"Student对象,name{self.name},age:{self.age}"

def __lt__(self,other):

return self.age<other.age

def __le__(self,other):

return self.age<=other.age

stu1 = Student("张三",19)

stu2 = Student("李四",20)

print(stu1<=stu2)

print(stu1>=stu2)

创建了一个student对象

创建了一个student对象

True

False

7. 内置方法__eq__ ==

class Student:

name=None,

age=None

def __init__(self,name,age):

self.name=name

self.age=age

print("创建了一个student对象")

def __str__(self):

print("调用了__str__")

return f"Student对象,name{self.name},age:{self.age}"

def __lt__(self,other):

return self.age<other.age

def __le__(self,other):

return self.age<=other.age

def __eq__(self,other):

return self.age==other.age

stu1 = Student("张三",20)

stu2 = Student("李四",20)

print(stu1==stu2)

创建了一个student对象

创建了一个student对象

True

8. 私有成员变量和私有成员方法

使用两个下划线 去声明成员变量或方法

class Student:

__age=10

def __oneFf(self):

print("私有成员方法被调用...")

def 调用我呀(self):

if(self.__age==10):

print("我十岁啦")

else:

self.__oneFf()

stu = Student()

stu.调用我呀()

我十岁啦

八、 继承

1. 单继承语法

class 类名(父类名):

类内容体

2. 单继承实例

class Phone:

IMEI=None # 序列号

productor="老的厂商" # 厂商

def call_by_4g(self):

print("4G通话...")

# 单继承

class Phone2023(Phone):

face_id="10001" # 面部识别ID

def call_by_5g(self):

print("2023年新功能:5G通话...")

phone=Phone2023()

print(phone.productor)

phone.call_by_4g()

phone.call_by_5g()

老的厂商

4G通话...

2023年新功能:5G通话...

3. 多继承语法

class 类名(父类名1,父类名2,父类名3...):

类内容体

注意:如果只想继承父类,不想拓展新功能 可以使用pass关键字

例如:

class 类名(父类名1,父类名2,父类名3...):

pass

九、复写

​​​​​​​十、类型注解

1. 变量的类型注解

​​​​​​​2. 函数(方法)的类型注解

​​​​​​​3. Union类型

​​​​​​​十一、 多态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/176296.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【HTML】我用“一行“代码为CSDN博客主页挂上灯笼(附源码)

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…

第一章 ArcMap、ArcCatalog、 ArcToolbox基础入门操作

文章目录第一节 ArcMap入门1 界面的基本介绍2 加载数据3 添加图层4 数据表5 内容列表5.1 按绘制顺序5.2 按源5.3 按可见性5.4 按可选性第二节 ArcCatalog入门1 界面和功能介绍2 文件夹连接3 新建数据4 修改字段第三节 ArcToolbox操作入门1 界面基本介绍2 查找工具3 查看帮助4 工…

汇编【王爽】实验8、9

实验8 分析一个奇怪的程序 程序从startstartstart入口处开始执行&#xff0c;一个nop指令占一个字节并表示No operation&#xff0c;此处用了两个nop指令的目的是在sss处预留两个字节的空间&#xff0c;程序执行mov cs:[di], ax之后sss处的两个字节被试图写入jmp short s1&…

【数据结构】二叉树的基本知识

目录前言一、树1、树的相关概念&#xff08;1&#xff09;结点&#xff08;2&#xff09;结点的度&#xff08;3&#xff09;叶结点&#xff08;4&#xff09;分支结点&#xff08;5&#xff09;父亲结点&#xff08;6&#xff09;子节点&#xff08;7&#xff09;树的度&#…

Spring笔记上(基于XML配置)

新年快乐。 文章目录一、Spring概述1. 为什么要用Spring框架&#xff1f;2. Spring介绍二、IOC/DI快速入门1. IOC控制反转2. DI依赖注入三、Bean的配置1. Bean的基础配置2. Bean的别名配置3. Bean的作用范围配置四、Bean的实例化1. 构造方法方式2. 静态工厂方式3. 实例工厂方式…

Java面试题,JVM相关问题

JVM相关问题一 、JDK、JRE、JVM二、内存管理三、GC如何判断对象可以被回收&#xff08;这是JVM的基础&#xff09;一 、JDK、JRE、JVM JDK&#xff1a;Java Development Kit【Java开发工具】&#xff0c;提供给Java开发人员来使用的。JRE&#xff1a;Java Runtime Environment…

Solid Edge 放样使用引导曲线

放样用引导曲线的时候被一个错误提示卡了挺长时间——“选来用作路径或横截面的所有边必须连接在一起”&#xff0c;所以记录一下遇到的问题。基础的操作可以去看帮助文件https://docs.sw.siemens.com/zh-CN/doc/246738425/PL20211001099989437.feature_modeling/feat12c&#…

Sprig框架集成(SSM框架) | Sping+SpringMVC+Mybatis

SSM框架 SSM是spingspringMVCmybatis集成的框架&#xff1a;标准的MVC模式&#xff0c;整个系统划分为表现层&#xff0c;controller层&#xff0c;service层&#xff0c;DAO层四层 Spring&#xff08;业务层&#xff09; Spring就像是整个项目中装配bean的大工厂&#xff0c;在…

MySQL server options

介绍 MySQL安装部署时&#xff0c;经常会关注一些参数是否合理。其实这些参数分为两类型。环境中调整的绝大部分是引擎层方面的。服务层参数&#xff0c;就是mysqld服务启动时的参数&#xff0c;如&#xff1a;datadir&#xff0c;port&#xff0c;socket之类的的&#xff0c;…

多重背包问题——单调队列优化

一、多重背包问题 我们在之前的文章中曾经讲解过多重背包问题&#xff0c;当时我们讲解了两种方法&#xff0c;一种方法就是三重循环&#xff0c;这种方法最为朴素好想。但是这种方法的时间复杂度非常高&#xff0c;后来我们想到了二进制优化的方式。那么今天我们将再介绍一种…

Java实习------Java基础2

基础语法基本数据类型 熟悉Java有哪些数据类型定义&#xff1a;Java语言是强类型语言&#xff0c;对于每一种数据都定义了明确的具体的数据类型&#xff0c;在内存中分配了不同大小的内存空间。Java语言提供了八种基本类型。六种数字类型&#xff08;四个整数型&#xff0c;两个…

18. 循环语句while,for语句的详解

python 中的循环语句只有 for 和 while两种&#xff0c;没有do…while循环&#xff0c;这与c/c是不同的。 1. while循环 (1) 语法格式 while <condition>&#xff1a;...# demo, 使用while循环累加1-100的和。 sum 0 counter 1 while counter < 100:sum counterco…

Java 23种设计模式(4.创建者模式-建造者模式)

代码分析 结构图 代码 public class Product {//产品类,多个部件构成List <String> parts new ArrayList<>();public void Add(String part){parts.add(part);}public void show(){System.out.println("creat parts");for(String part:parts){System…

第十届蓝桥杯省赛 C++ B/C组 - 等差数列

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;蓝桥杯题解集合 &#x1f4dd;原题地址&#xff1a;等差数列 &#x1f4e3;专栏定位&#xff1a;为想参加蓝桥杯的小伙伴整理常考算法题解&#xff0c;祝大家…

STL分析(九 适配器)

容器适配器&#xff1a;stack&#xff0c;queue stack和queue内含一个deque 函数适配器 binder2nd绑定第二参数 调用的过程中&#xff0c;算法count_if函数读取了迭代器头尾指针后&#xff0c;读取第三个参数为functor object即仿函数。因此在其参数为bind2nd(less< int&g…

LeetCode220123_140、117. 填充每个节点的下一个右侧节点指针 II

给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 NULL。初始状态下&#xff0c;所有 next 指针都被设置为 NULL。进阶…

双指针思想,c语言

问题导入 对一个给定的自然数M&#xff0c;求出所有的连续的自然数段&#xff0c;这些连续的自然数段中的全部数之和为M。 例如&#xff1a;1998 1999 2000 2001 2002 10000&#xff0c;所以从1998到2002的一个自然数段为M 10000的一个解。 输入格式 第一行&#xff0…

JQuery总结(三)

jQuery 事件 on可以同时绑定多个事件&#xff0c;并且动态添加的元素也会自动添加事件 自动触发事件&#xff1a; 案例1&#xff1a; <style>div{width: 100px;height: 200px;background-color: violet;transition: all .5s;}.current{width: 200px;height: 100px;ba…

ARP渗透与攻防(三)之流量分析

ARP攻击-流量分析 ARP渗透与攻防(一)之ARP原理 ARP渗透与攻防(二)之断网攻击 系列文章 1.环境准备 1.kali作为攻击机 2.win10作为靶机 IP地址&#xff1a;192.168.110.11 3.网关 IP地址&#xff1a;192.168.110.1 2.kali数据包转发 出于安全考虑&#xff0c;Linux系统默…

使用Py6S计算瑞利反射率教程

1、前言那么&#xff0c;首先&#xff0c;什么是瑞利反射率&#xff1f; 好吧&#xff0c;这是由大气中的瑞利散射引起的反射率&#xff08;在大气层顶部测量&#xff09;。 这是大气中气体分子对光的波长依赖性散射——这是光穿过大气时不可避免的结果。所以&#xff0c;关于如…