Python学习笔记
Python学习笔记
学习地址
https://player.bilibili.com/player.html?bvid=BV1eZ421b7ag&autoplay=0
1、print(’xxx’,’xxx1’,seq=”*”,end=’\n’) #seq多个字符串以什么间隔,最后以\n结束
2、打印内容
3、print(‘xxx%d,xxx%.2f’%(age,name)) print(f’xxx{name}xxx{age}’)
input
a = input(‘请输入你的名字’)
看变量是什么类型 type(a) isinstance(a,str)
用户输入的任何内容Python都认为是一个字符串
变量
代码:处理数据用的
变量:存储数据的
变量定义之后,后续就可以直接使用了
变量必须先定义后使用
=两遍要留一个空格
**变量的命名规则:**1、必须由字母、数字、下划线组成 2、不能以数字开头 3、严格区分大小写 4、不能使用内置关键字
常量
程序再运行的过程中,值永远不会发生改变的量称之为常量
python没有专门的变量类型,一般约定大写代表常量
标识符就是程序员定义的变量名、函数名 名字需要有见名知义的效果
标识符可以由字母、下划线和数字组成 不能以数字开头 不能与关键字重名
关键字就是在Python内部已经使用的标识符
关键字具有特殊的功能和含义
开发 这不允许定义和顾安安子相同的名字的标识符
关键字查看方式:
1 |
|
命名规则:
命名规则可以被视为一种惯例,并无绝对与强制
目的是为了增加点的识别和可读性
在Python中,如果变量名需要有二个或多个多个单词组成时,可以按照一下方式命名
- 每个单词都使用小写字母
- 单词与单词之间使用_下划线链接
- 驼峰命名法:小驼峰、大驼峰
数据类型:
整型(Integers)、浮点数、复数、布尔型、字符串、列表、元组(类似list,不可变)、集合、字典
浮点数:四舍五入 n3 = round(n1+n2,2) 向上取整 n4 = math.ceil(n1+n2)
向下取整 n4 = math.floor(n1+n2)
数据类型转换:
bool(‘xxx’) 有内容判断为真 空字符串为False
进制转换:s = ‘1a’ print(int(s,16))
Python中的小整数,通常指的是-5至256之间的整数 小整数缓存池 id()函数功能获取变量地址
运算符和表达式
算数运算法
+-*/ // % **
/默认保留一位小数
赋值运算符
= += -= /= //= %= **=
比较运算符
== != > < >= <=
字符串的比较运算:每个字符的ascii码值
逻辑运算符
and or not 与或非
位运算符
& 按位与
| 按位或
^ 按位异或
~ 按位取反
<< 左移动运算符
>> 右移动运算符
在计算机中,数字存储时最高位为符号位,
符号位为0时表示正数,符号位为1时表示负数。
数字在计算机中是以补码的形式进行存储的,
整数的补码与原码相同,
负数的补码是在原码的基础上除符号位外,按位取反后,再加1.
+1,原码为0 0001,补码为 0 0001.
-1 ,原码为1 0001,补码为:1 1111。
+2,原码为:0 0010,补码为:0 0010.
-2,原码为:1 0010,补码为:1 1110
负数 -1 取反得到原码
成员运算符
in 如果在指定的序列中找到值返回True,否则返回False
not in 如果在指定的序列中没有找到值返回True,否则返回False
运算符优先级
算数运算符 > 按位运算符 > 比较运算法 > 赋值运算法 > 成员运算法 > 逻辑运算法
0.1+0.2是不等于0.3
1 |
|
小数10进制转2进制方法:
0.5125乘2,得1.025所以2进制小数第一位是1
0.025乘2, 得0.05所以2进制小数的第二位是0
0.05乘以2,得0.1所以2进制小数的第三位是0
0.1乘以2, 得0.2所以2进制小数的第四位是0
0.2乘以2, 得0.4所以2进制小数的第五位是0
0.4乘以2, 得0.8所以2进制小数的第六位是0
0.8乘以2, 得1.6所以2进制小数的第七位是1
0.6乘以2, 得1.2所以2进制小数的第八位是1
所以(0.5125)10 = (0.10000011)2
条件判断
单分支选择结构
if 要判断的条件:
条件成立时,要做的时期…
多分支选择结构
if 条件1 :
elif 条件2:
elif 条件3:
else
嵌套选择
if 条件1:
if 条件2:
match语句
python3.10及以后版本中引入的新特性,用于模式匹配
它允许你根据对象的模式来检查对象,并执行相应的代码快
1 |
|
match语句特别适用于处理复杂的数据结构,如元组、列表、字典等,以及自定义类的实例。
列表[] 元组() 字典{}
代码规范:四个空格或者一个tab键为一个缩进
判断你是数字
>>> a = ‘1’
>>> print(a.isdigit())
True
判断闰年的经验:普通闰年的年份是4的倍数,且不是100的倍数;世纪闰年的年份必须是400的倍数
循环
while
循环的作用就是让指定的代码重复的执行
while循环最常用的应用场景就是让执行的代码按照指定的次数重复执行
1 |
|
for
1 |
|
break
作用:退出循环
注意:只能跳出距离最近的for或者while循环
continue
作用:跳过本次循环后面的剩余语句,然后继续下一次循环
注意:只能跳出举例最近的for或者while循环
与else结合
else的下级代码
没有通过break退出循环,循环结束后,会执行的代码
1 |
|
pass
作用:当语句要求不希望任何命令或代码来执行时使用
说明:
pass语句表示一个空操作,在执行时没有任何的响应,pass的位置最终应该有代码来执行,只不过暂时写不出来
可以使用在流程控制和循环语句中
1 |
|
组合数据类型
序列
在Python中,有这样一些类型,它们的成员是有序排列的,并且可以通过下标访问成员,这些类型称之为序列,包括:列表、range、元组和字符串
函数 | 描述 | 备注 |
---|---|---|
len(item) | 计算容器中元素个数 | |
del(item) | 删除变量 | del有两种方式 |
max(item) | 返回容器中元素最大值 | 如果是字典,只针对key比较 |
min(item) | 返回容器中元素最小值 | 如果是字典,只针对key比较 |
切片 “0123456789”[::-2] 结果:”97531” 支持的数据类型:字符串、列表、元组
列表
List(列表)是Python中使用最频繁的数据类型,在其他语言中通常叫做数组
专门用于存储一串信息
列表用[]定义,数据之间使用,分隔
列表的索引从0开始
索引就是数据中列表中的位置编号,索引又可以被称为下标
注意:从列表中取值时,如果超出索引范围,程序会报错
1 |
|
元祖
Tuple(元祖)与列表类似,不同之处在于元祖的元素不能修改
元组表示多个元素组成的序列
用于存储一串信息,数据之间使用,分隔
元组用()定义
1 |
|
元组的基本操作
1 |
|
range
range start end step 生成一个等差序列,包左不包右
注意序列属于不可变序列,不支持元素修改,不支持+和*操作
range一般用于for-in循环遍历
字符串(String)
字符串是一串字符,是编程语言中表示文本的数据类型
在Python中可以使用一堆双引号”或者一堆单引号’定义一个字符串。
字符串是以单引号或者双引号括起来的任意文本,也可以是三引号’’’或者”””引起来的任意文本
操作:字符串加法、字符串乘法
1 |
|
字典(dict)
dictionary(字典)是除列表以外python之中最灵活的数据类型
字典同样可以用来存储多个数据
通常用于存储描述一个物体的相关信息
和列表的区别:
列表是有序的对象集合
字典是无序的对象集合
字典用{}定义
字典使用键值对存储数据,键值对之间使用,分隔
键key是索引
值value是数据
键和值之间使用:分隔
键必须是唯一的
值可以取任何数据类型,但键只能使用字符串、数字或元组
1 |
|
集合(set)
不允许有重复元素,如果添加重复元素,则会自动过滤,可以进行交集、并集的运算
是一种无需且无重复元素的数据结果
与dict类似,是一组key的集合(不存储value)
1 |
|
可变类型 & 不可变类型
不可变类型:1、数字 2、字符串 3、元组 4、布尔类型
int
(整数)float
(浮点数)str
(字符串)tuple
(元组)frozenset
bool
可变类型:1、列表、2、字典、3、集合
list
(列表)dict
(字典)set
(集合)bytearray
用户登录系统
1、注册用户账号密码,确认白黑名单 列表->字典 key变成人名
2、循环遍历用户名,白黑名单,密码
3、核对账号密码是否匹配,匹配则登陆成功
异常处理
异常
1、如果代码没有语法问题,可以运行,但会出运行时的错误,例如除零错误。下标越界等问题,这种在运行期间检测到的错误被称为一串
2、出现了异常必须处理否则程序会终止执行,用户体验会很差
3、python支持程序员自己处理检测到的异常
4、可以使用try-except语句进行一串的检测和处理
1 |
|
函数
基本概念
使用关键词def
确定函数名称、参数名词、参数个数、编写函数体(用于实现函数功能的代码)
1 |
|
函数的调用:
通过函数名进行调用函数
定义好函数之后,只表示这个函数封装了一段代码而已,如果不主动调用函数,函数是不会主动执行的
函数的参数:
形参:就是函数定义时小括号里的参数,是用来接收参数用的,在函数内部作为变量使用
实参:函数调用的时候,小括号里的参数,是用来吧数据传递到函数内部用的
函数可以没有形参和实参
函数的返回值:
返回值是函数完成工作后,最后给调用者的一个记过
在函数中使用return关键字可以返回结果
调用函数一方,可以使用变量来接收函数的返回结果
默认参数
位置参数:
要求实参顺序必须和形参顺序完全一致,由形参顺序决定实参顺序
缺省参数:
定义函数时,可以给某个参数指定一个默认值。具有默认值的参数就叫做缺省参数
可变参数:
传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个
1 |
|
变量作用域
局部变量:
在函数内部定义的变量,只能在函数内部使用
全局变量:
在函数外部定义的变量,所有函数内部都可以使用这个变量
1 |
|
匿名函数:
lambda函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方,优点:让代码更加精简,不需要考虑命名的问题
1 |
|
递归的过程
1、写出临界条件
2、找这一次和上一次的关系
3、假设当前函数已经能用,调用自身技术啊上一次结果,再求出本次结果当参数满足一个条件时,函数不再执行
模块
模块
模块就好比是工具包,要想使用这个工具包中的工具,就需要导入import这个模块
每一个以扩展名py结尾的python源代码文件都是一个模块
在模块中定义的全局变量、函数都是模块能够提供给外界直接使用的工具
1 |
|
包
包是python模块的一种组织形式,将多个模块组成在一起,形成一个大的python工具库。包通常是一个拥有__init__.py文件的目录,它定义了包的属性和方法
1 |
|
常见的标准库
正则表达式
1 |
|
time
1 |
|
turtle
用于画图的库,可用于在电子时钟等一系列的
socket
网络编程
1 |
|
pip
–upgrade -U 升级包
文件
文件是以计算机硬件为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序等等。计算机文件基本上分为两种:二进制文件 (没有统一的字符编码)和纯文本文件(有统一的编码,可以被看做存储在磁盘上的长字符串)。
纯文本文件编码格式常见的有ASCII、ISO-8859-1、GB2312、GBK、UTF-16等
二进制文件与文本文件的一个最主要的区别在于是否有统一的字符编码格式、二进制文件顾名思义是直接由0和1组成,无统一的字符编码。如图片文件(jpg、png),视频文件(avi)等。
路径问题:绝对路径、相对路径
打开文件-操作文件-关闭文件
1 |
|
打开文件的格式:
1 |
|
with语句:
1 |
|
csv格式:
1 |
|
面向对象的程序设计
基本概念
类的定义:
class:表面这是一个类
classname:类的名字
{}:父类集合的开始和技术
object:父亲的名字,定义的类继承自父类,可以不写,默认是object,object是所有类的直接或间接父类
1 |
|
实例属性
1 |
|
类属性
1 |
|
实例方法
1 |
|
类方法
1 |
|
静态方法
1 |
|
面向对象的三大特性
封装
封装是指将数据和方法包装在类中,对外提供接口控制访问权限,隐藏内部实现细节。
1 |
|
继承
继承是指子类自动获得父类的属性和方法,可以减少重复代码。
1 |
|
多态
多态是指不同类的对象可以通过统一接口调用各自的方法,提升代码灵活性。
魔法方法
Python中的魔法方法(也称为特殊方法或双下划线方法)是一种在类定义中使用的特殊命名约定的方法。
当Python遇到某些内置操作时,它会尝试在对象上调用这些魔法方法
这些操作包括但不限于算数运算、属性访问、类型转换等
print -> def str(self): 默认执行
add(self,other)
eq(self,other)
系统实战
分析需求:学生、老师、课程、班级
然后针对不同的类,写初始变量以及相应类的后函数,要分析除父子类
管理系统-对话系统-连接千帆API实现智能问答