w2

周内容回顾

基本数据类型

数据名 特点/用法/定义 代码形式
整型int 表达整数形式的数据 age=19
浮点型float 值带有小数数据的数据 height=1.80
字符串str 使用引号引起来的文本 name=‘xiaochen’
字典dict 能够准确的表达数据的含义 使用k v键值对 dict=
列表list 能偶储存多种数据类型 使用中括号括起来 数据与数据之间使用逗号隔开 list=[‘aaa’,’‘bbb’]
布尔值bool 判断事物是否正确 0 None '' [] {} 以上都是false其他均为true
元组tuple 可以储存多种数据类型 使用小括号括起来 数据与数据之间使用逗号隔开 t1 = (11, 22, 'xiaochen')
集合set 使用大括号括起来 内部可以储存多种数据类型 数据与数据之间逗号隔开 s1 =

与用户交互

1.使用 input 获取用户输入
   eg:name = input('请输入你的姓名>>>:')
   #获取到的用户数据均会处理成字符串

2.print自带换行符
   换行符有: \n \r\n

3.结束换行符
   print(数据,end="默认是\n")

格式化输出

1.使用占位符
   占位符有:%s %d
   info = '%s你好'
   print('info % 'xiaochen'')  # xiaochen你好
   需要注意的是在使用多个占位符时需要等同与占位符数量的数据值
   %s 与 %d 的区别在于 %d 只支持数据类型
2.字符串的格式化输出(推荐使用)

运算符的写法

1.常见的运算符
  + - * /
  %     #除剩的余数
  //    #整除
  **    #幂
2.简化写法
  n  +=1 # n = n+1
  n **=1 # n = n**1

常用赋值符

1.链式赋值
  name = 'xiaochen'
  name1 = name
  name = name1 = 'xiaochen'
2.交叉赋值
  方式一 中间赋值法
    t = m
    n = 1
    m = 2
    m = n
    n = t
    
  方式二 一步到位
    n,m=m,n  
    
3.解压赋值
  name = ['tt','jj','cc']
  name1,name2,name3 = name
  要准备和数据值个数相等的变量名
  #不准备使用的数据可使用下划线来代替
  a,_,b = name 
  #解压多个数据值时可用*来接收多余的数据
  a,*b = name
  print(b)  # ['jj','cc']

逻辑运算符

1.and
   and 用于连接多个条件 如果一个条件不成立则所有条件为false
2.or
   or 连接的条件只要有一个成立 则其余条件全为true
3.not
   否定条件的结果若为true 则会变成false
 
'''
三者的混合使用有优先级之分
not > and > or
可以使用括号来确定优先级 (先看括号里的)
'''

成员运算符

判断个体是否在群体中
in 
not in 
n = ['1','2','3']
print('1' in n)  # true
'''
1.字符串的最小单位是单个字符(包括空格)
2.列表中的最小单位是数据值
3.字典在参与成员运算的时候只有键的参加
'''

身份运算符

==     用于判断数值是否相等
is     用于判断内存地址是否相等
使用 id 可查看数据的内存地址
l1 = ('1')
print(id l1)  # 所得到的数字就是数据存储的内存地址

小整数池
在数据值比较少 数据会将数据存到一个地址

'''
值相等 内存地址不一定相等
内存地址相等 值一定相等
'''

垃圾回收机制

1.引用计数
   当数据值所被引用的次数为0时 系统将自动清除此类数据
   # 存在循环引用
2.标记清除
   主要针对循环引用问题
   当内存占用到临界值时 系统会停止运行 扫描所有数据并给所有的循环使用的数据打上标记一起清除
3.分代回收
   垃圾的回收机制频繁的运行会损耗各项资源
   为节省资源 数据的使用频率会被归纳
   新生代  青春代  老年代 (越往下的数据使用频率越高 检测频率越低)
    

流程循环结构

  • 顺序结构
从上至下的运行代码
  • 分支结构
1.if 分支
   if 条件满足就会开始执行 if下的子代码
2.if else 分支
   else 当 if 的条件不满足时就会执行 else下的子代码
3.if elif else 分支
   当 if 条件不满足时则会判断是否满足 elif后的条件如果都不满足则会执行 else的子代码
    # if  elif  和else 三个只能执行其中之一 不存在三个同时执行
  • 循环结构
1.while 循环   
    先判断条件是否成立
   成立则会执行循环体代码
   按照循环会一直执行直到条件不满足为止
   # 两个特殊指令
   break 可直接结束本次的循环
   continue 可结束本次循环 直接进行下一次的循环
   # while 与 else的连用
   while
	条件满足后执行循环体代码
   else
	当循环体代码没有被强制结束 结束完循环体代码后就会执行else下的子代码
   # 死循环
	死循环的执行会使cpu功耗急剧上升 直到采取保护措施
    尽量不要让cpu长时间的进行运算
   # 循环嵌套位
	当在我们编写代码时 可能会需要写到多个 break
	为了更加方便我们的编写 可以将多段代码视为一个整体
    
2.for 循环
   for 循环的特点:
   可以遍历取值
   当遍历完则会自动结束
 常见的遍历的数据类型有 (字符串,列表,字典,元组,集合,)
 #  字符串的遍历只有单个字符
 #  字典的遍历只有键
 for 变量名 in 待遍历的数据:
    for 循环体代码
 else:
    for循环体代码没有被break强制结束所执行
 # for循环依然可以用break和continue用法与while循环一致
     

range的用法

可以理解为产生一个内部含有多个数字的数据
for i range(100)     # 默认从0 到 99 
for i range(0,100)   # 第一个为起始位置 第二个为终止位置
for i range(0,100,2) # 第三个为等差的公差(步长)默认为1

数据类型的内置方法

  • 整形内置方法
1.类型转换
   int(其他数据类型)
   # 浮点型可以直接转 字符串必须是纯数字才行
2.进制数的转化
   十进制的转换
    print(bin(100)) #0b1100100 二进制
    print(oct(100)) #0o144     八进制
    print(hex(100)) #0x64      十六进制
   其他机制数转变为十进制
	print(int(0b1100100))
    print(int("0b1100100", 2)) # 需要加上进制数来提供识别
3.python对数字并不敏感(精确度低)
  • 浮点型内置方法
1.类型转换
    float(其他数据类型)
    字符串的数据只能有一个小数点,其他必须是纯数字
  
  • 字符串内置方法
1.类型转换
     str(加上数据类型)  # 任意数据类型加上引号都行
2.必须掌握的方法
   # 索引取值(从0开始 超出范围报错 支持使用负数)
   # 切片操作
     print(l1[1:5])    # 从1至5 从左至右
     print(l1[1:5:2])  # 间隔取值 默认为1
     print(l1[:])      # 不写数字就全要
     print(l1[2:])     # 从2开始后面全要
     print(l1[:5])     # 从0开始到5
   # 统计字符串的个数
     print(len(l1))    # 空格也会被计算到个数中
   # 移除字符串首尾指定的字符
     print(l1.strip()) # 不写就是去除空格
   # 切割字符串中指定的字符 
     res = jason|19|1.80
    print(res.strip('|')) # 所得到的数据类型为一个列表
    print(res.strip('|',maxstrip=1)) # 最大的切割数 .rstrip可以从右往左
   # 字符串的格式输出
    format玩法1
      rex = my name is {}.format('xiaochen')
    format玩法2
      可以被所引反复使用
      rex = my name is {0} my age is {0}{1}.format('xiaochen',19)  
    format玩法3  '''实用性较高'''
      name = input('请输入你的姓名>>>')
      age = input('请输入你的年龄>>>')
      res = f'my name is {name} my age is {age}'
   # 大小写相关
     .upper()  # 全转为大写
     .lower()  # 全转为小写
   # 判断字符串中是否为纯数字
     .isdight()
   # 替换字符串中的指定内容
     .replace('待替换的','替换的内容','替换的个数 默认全部')
   # 字符串的拼接
     print(字符串1+字段串2)
     print(字符串1*数量)
     print('|'.join(['jj','bb']))  # 拼接的必须是字符串
   # 判断字符串的指定字符出现的次数
	 .count('')
   # 判断字符串的开头和结尾
     .startswich('内容')
     .endswich('内容')
   # 其他用法补充
     .title()       # 将所有的开头大写
     .capitalize()  # 只将第一个开头大写
     .swapcase()    # 反转大小写
     .index()
     .find()
    '''
    两个都是查找,但是find找不到会返回内容 内容可以被定义 index查找未找到会直接报错
    '''
  • 列表内置方法
1.类型转换
   list(数据类型)
   可被for循环的数据类型均可转换为列表
2.需要掌握的方法
   # 索引取值
   # 切片操作 (与字符串一致)
   # 间隔 方向(与字符串一致)
   # 统计列表中数据值的个数
      .len()
   # 数据值的修改
  	  l1[1]=数据值
   # 列表添加数据值
      方式一
    .append()   在列表的末端加入
      方式二
    .insert(插入位置,'插入的数据值')
      方式三
    列表一.expand(列表二) # for  循环加append
   #  删除列表数据
     方式一 
    del 数据[所需删除数据的索引值]
     方式二
    列表.remove(数据名)
     方式三
    .pop()   # 默认弹出尾部数据值
    弹出不是删除 弹出的数据可被承接
   #  排序
    .sort()  # 默认是升序
    .sort(reverse=ture)  # 改为降序
   #  统计数据出现次数
    .count()
   #  颠倒列表的顺序
    .reverse()
  • 字典内置方法
1.类型转换
      dict(数据类型)
   但字典的数据类型转换一般手打 
2.必须会的操作
# 按k取值 (不推荐使用)
# 按内置方法取值get取值 (推荐使用)
 k 与 get的区别在于 如果k不存在会报错 但get不会报错 默认返回none可自定义
# 修改数据值
 字典名[键]=修改的数据内容(如果键存在则会修改)
# 新增键值对
 字典名[键]=数据值(键不存在直接添加)
# 删除数据 
 del     pop
# 统计字典的键的个数
 .len
# 字典三剑客
 .key()    获取所有键
 .values() 获取所有的值
 .items()  获取所有键与值
# 补充
 print(kk(['name','age'],[]))   可获得数据值相同的字典

  • 元组内置方法
1.类型转换
    tuple(数据类型)
    支持for循环的数据类型均可
2.元组必须会的操作
# 索引取值
# 切片操作
# 间隔 方向
# 统计元组内数据值的个数
# 统计元组内某一数据出现的次数
   .count()
# 统计元组内指定数据的索引值
   .index
# 元组内如果只有一个数据值时逗号不可被省略
# 元组内所绑定的数据值无法修改内存地址
# 元组内不可添加和删除数据 
  • 集合内置方法
1.类型转换
    set(数据类型)
    集合必须是不可变类型
    集合是无序的
2.集合主要作用
   去重
   关系运算 
 # 去重
    集合内元素是唯一的所以会自动去重
 # 关系运算
    &      两个集合共同的
    a-b    a中特有
    a^b    ab中特有的
    a|b    ab集合的所有元素

可变类型与不可变类型

1.可变类型
      值修改 但内存地址不变
      集合 字典 布尔值 列表
2.不可变类型    
      值修改 内存地址也会变
      整型 浮点型 字符串 元组

字符编码论

计算机只能识别二进制 
通过字符编码将我们的语言来转化为二进制让计算机了解
# 编码与解码
编码:将人类的字符转变为二进制的过程
字符串.encode()
解码:将计算机能够读懂的数据按照指定的编码解码成人类能看懂的语言
bytes类型数据.decode()
posted @ 2022-10-06 19:12  早点早点灬  阅读(612)  评论(0)    收藏  举报