python二级笔记记录

一 基本操作(3×5')

1.一些函数

print会将元素作为它们本身的值来输出,而不会输出带有引号的字符串形式
print()的参数
end=''设置不换行输出

jieba库--import jieba,jieba.lcut(s) 返回list

random库--import random
random.seed(a=None/数字)--初始化随机数种子,设置为固定数字可保证每次随机生成的一样
random.sample(对象,k)--从对象中随机选取k个元素,返回list
random.randint(a,b)生成一个[a,b]区间的整数, random.random()生成[0,1)上随机浮点数,
random.choice(seq)从序列的元素中随机挑选一个元素,

chr( )返回Unicode码对应的字符串, ord()返回字符串对应的Unicode码

str.replace(a,b)将指定的a替换为b,参数为字符串类型。若str中不存在a,则直接返回原始字符串

input()无论用户输入什么内容,input()都以字符串类型返回,若需要运算的话,加上eval()

2.字符串格式化

'{ }'.format()进行格式化输出,format参数类型为待格式化字符串填充物,对象可以是整数、浮点数、字符串等.  { }里可以为空

  • x,X分别表示16进制的小写和大写
  • 若{}里有单引号或双引号,要记得用转义字符\
  • 格式化输出顺序::(必填)-->填充物-->位置-->槽宽度-->千位分隔符-->精度-->类型
  • 注意,若需标出千位分隔符或进制换算,需要将字符串经过eval转换成能够运算的数字

7.逆序用[::-1],不仅用于列表也可以用于字符串

8.索引[ ]里必须是整数类型,如果是字符串类型,需要用int()转换为整数类型

9.一些表示

判断整数:a%1==0
等比数列表示:a*(b**i)
判断字符串是否为中文:' \u4e00 '<= c <=' \u9fff '  (中文字符unicode的范围)
保留2位小数:round(num,2)或'{:.2f}'.format(num),都是四舍五入保留两位小数
判断字符串是否为数字:'1'<=c<='9'或if i.isnumeric()
判断字符串是否为字母:if i.isalpha()
添加26个字母:for i in range(26):  ls.append(chr(ord('a')+i))
添加1~9数字:for i in range(9):  ls.append(chr(ord('0')+i))

我的错题:

23--将数字1234..替换为一二三四..
25--字符串格式化时不要忘记 {} '
27--判断整数a%1==0,break结束while True循环,try-except只是异常处理机制
28--n为字符串,eval(n)+1对,eval(n+1)报错
30--注意区分for i in和for i in range
34--值得再做
36--添加a~z,0~9的方式值得学习
40--完全不会。考察嵌套循环,大循环整体(行),小循环局部(行里的数字)
42--没想到考点会在end
43--format的两种参数
47--完全不会。与36有些类似

二 简单应用(10'+15')

1.对文件内容统计(6,8,18,20,22,30)

在获取文件内容时,要去除每一行内容的换行符\n,并检查是否有空行

for line in f:
    lines=line.strip('\n').split(',')
    if lines!=[' ']
​​​​​​​        ...

 词频统计:创建字典的同时统计频数

d={}
d[i]=d.get(i,0)+1

 词频统计:利用列表(18题)

词频排序:利用字典属性items获得键值对

d={}
d['键']=值
ls=list(d.items())
ls.sort(key=lambda x: x[1],reverse=True)

平均值计算:利用字典属性values

all=0
for i in d.values():
    all+=eval(i)
ag=all/len(d)

2.对输入内容操作(1,2,28)

多行输入内容词频统计(给出键和值)

data = input()  # 课程名 考分
d={}  
while data:  #while循环对多行输入内容创建字典,保证能够输入多行,当某行为空时,终止循环
    ls = data.split()  #用户每输入一行就会产生一个列表,就会往空字典里加一对键值对
    d[ls[0]] = ls[1]
    data = input()

ls2=list(d.items())  #排序并计算平均值
ls2.sort(key=lambda x: x[1],reverse=True)  #里面的x可以为任意字母,代表ls2中的元素

all=0
for i in d.values():
    all=all+int(i)
ag=all/len(d)
print("最高分课程是{} {}, 最低分课程是{} {}, 平均分是{:.2f}".format(ls2[0],ls2[0],ls2[-1][0],ls2[-1][1],ag))

单行输入内容词频统计(仅给键未给值)

txt = input("请输入类型序列: ")
tem = txt.split()
d = {}
for i in tem:
    d[i]=d.get(i, 0)+1
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True)  # 按照数量排序
for k in ls:
    print("{}:{}".format(k[0], k[1]))

去除指定字符 

dela = '-;:,.()"<>'
s=input()
new=''
for i in s:
    if i in dela:
        i=''
    new+=i
for i in s:
    new=s.replace(i,'')

3.写入文件(26)

 写入文件时,先要以'w'模式打开,然后再write,注意只能写入字符串类型

f.open('文件名','w')
f.write('要写入的内容')  #只能写入字符串类型,不能写入字典

4.turtle库(3,4,5,7,9,11,13,15,17,19,21,23,25,27,28,29题)

1.在海龟的坐标系中,初始时海龟的方向是向右 
2.画多个图形时,外层控制图形的个数颜色位置等,内层控制单个图形的角度边长等
3.有抬笔penup()必有落笔pendown(),见23题

t.seth(angle)以初始水平向右方向为参考旋转到多少度,正数逆转,负数顺转
t.fd(长度)沿着当前方向前进指定距离        
t.bk(长度)往返走指定距离
t.left(angle)以当前方向为参考向左转
        !画正方形外接圆时,正方形画完后海归方向回到初始向右的方向
t.circle(半径)画圆
t.goto(x,y)x,y为起点坐标
t.penup()拿起笔-->turtle.goto(x,y)挪笔到哪-->turtle.pendown()-->turtle.fd()
t.pencolor('画笔颜色')
t.color('画笔颜色','填充颜色')画填充圆
t.pendown()-->t.color()-->t.began_fill-->t.circle()-->t.end_fill()

5.无限循环结构while(12)

while True创建一个无线循环,后面如果需要根据条件停止循环,需要建立flag=False, if flag==False,break来终止循环

while True:
    s = input("请输入不带数字的文本:")
    flag=False
    for i in s:
        if '0'<=i<='9':
            flag=True
    if flag==False:
        break
print(len(s))

6.列表运算(10,16)   7.查找判断(14,24)

22--对输入文本除去标点的长度计算;以标点将文本分隔成单句每句一行

7.一些细节

通过键获得对应的值:d.get('key')--得到的是['123']  d.get('key')[0]--得到的是值字符串123

三 综合应用(20')
  

四 选择题--公共基础知识

1.计算机组成

计算机系统由硬件系统和软件系统组成。硬件系统由五大部件由运算器、控制器、主存储器(内存)、输入/输出设备组成。其中运算器和控制器组成(中央)处理器(CPU),CPU和主存构成主机。软件系统由系统软件,应用软件组成。

硬盘通常被归类为输入/输出设备(I/O设备)之一硬盘(最大而慢)和内/主存(小而快)是计算机系统中的存储设备,内存用于存储正在运行的程序和数据,以便CPU可以快速访问并执行操作,硬盘用于长期存储数据,在计算机关闭后不丢失数据

寄存器是一种位于CPU(中央处理器)内部的高速存储设备,用于临时存储指令、数据和中间结果。寄存器是CPU中最快速的存储设备之一,其存取速度远远快于主/内存储器

CPU通过总线访问内存和输入输出设备,由于寄存器在CPU内,CPU可直接访问寄存器

2.存储器

存储器可分内存储器外存储器和内存与CPU之间的高速缓存虚拟存储器,外存储器比如磁盘磁带U盘,内存储器是电脑自带的存储器,储存信息最小单位为字节,B。
内存储换算:1KB=2的10次方B, 1MB=2的10次方KB,1GB=2的10次方MB, 1TB=2的10次方GB
外存储器换算:1KB=10的3次方B, 1MB=10的3次方KB,1GB=10的6次方KB, 1TB=10的9次方KB

内/主存储器一般分为只读存储器(ROM),随机存取存储器(RAM)
只读:信息一旦写入后就固定下来,即使切断电源信息不会丢失,又称固定存储器
随机:用于存储程序运行时数据和指令的临时存储设备,分为静态存储和动态存储,一旦断电所存储的信息随之丢失

虚拟存储器是对主存的扩展,其空间大小取决于计算机的地址位数

访问速度:寄存器>缓存>内存>外存

3.存储管理

连续存储管理:将内存空间划分为一个个固定大小的分区,一个作业占一个分区、每个分区的大小既可以是固定的(固定分区),也可以是可变的(可变分区或动态分区)。当作业被调入内存中运行时,由重定位机构将作业中的页映射到内存空间特定位置的块上,属于静态定位。分区存储管理是连续存储管理的一种形式

分区存储管理:把主存储器中的用户区作为一个连续区或分成若干个连续区进行管理,每个连续区中可装入一个作业。是一种连续存储管理技术,分为固定分区和可变分区,采用静态地址定位技术
请求分页存储管理:是最常用的一种实现虚拟存储器的方法 
分段存储管理:采用动态地址定位技术进行地址转换
请求分段存储管理:在虚拟存储管理中,对应内存中的分段式存储管理叫请求分段式存储管理,其实现机制与前者类似。

连续静态-->分区,动态-->分段或请求分段,虚拟存储-->请求分页或请求分段

4.原码反码补码偏移码

原码就是一个数的二进制表示形式,首位为标志位,若该数为正数则标志位为0,负数则为1,例如14=00001110,-21=10010101
反码:正数的原码反码补码相同,
           负数的反码规则是标志位不变,其他位取反,例如-21=11101010
补码:正数的原码反码补码相同
           负数的补码=负数的反码最后一位+1,例如-21=11101011
偏移码:补码的标志位取反即是偏移码

计算机内的计算方式为以补码计算,再将补码转换为原码(补码-->反码-->原码)
正数的偏移码最后一位(最高有效位)通常为1

5.调度

调度可分为低级调度,中级调度,高级调度
低级调度:又称进程调度,它负责给就绪队列的某进程获得CPU
中级调度:又称在虚拟存储器中引入,在内、外存对换区进行进程对换。
高级调度:又称作业调度,它决定把后备作业调入内存运行

进程调度就是把CPU分配给处于就绪队列中的某一进程并使之执行的过程。进程调度亦可称为处理器调度或低级调度,相应的进程调度程序可称为分配程序或低级调度程序。因此,进程调度仅负责对CPU进行分配。

6.进程状态,原语调用

进程状态:运行状态、就绪状态、阻塞/等待状态、创建状态、终止状态。

  • 阻塞状态:进程等待某一事件(如输入完成、等待其他进程的信息)而发生的暂时停止运行。即使把CPU分配给它,该进程也不可以运行。若它等待的事件已发生即阻塞原因解除,就转为就绪状态
  • 就绪状态:进程已经获得了除CPU以外的其他一切资源,只是因为缺少CPU而不能运行;只要获得CPU就会立即投入运行。处于阻塞状态的进程,当阻塞原因解除后即进入就绪状态。进程一旦创建完成,即进入就绪状态。
  • 运行状态:处于运行状态的进程的数目≤处理器的数目,进程在运行状态下如果时间片用完,即进入就绪状态,当缺少某一资源需要等待资源时则进入阻塞状态。

原语包括撤销进程原语、唤醒进程原语、阻塞进程原语、创建进程原语。

  • 创建进程需调用创建进程原语
  • 进程在运行结束后需调用撤销进程原语(上完课撤走)
  • 进程在运行中释放系统资源后进需调用唤醒进程原语
  • 进程在运行中由于资源得不到满足需调用阻塞进程原语

进程控制块PCB是进程存在的唯一标志,是由系统为每个进程分别建立的

状态转换:
就绪状态(已获得除CPU以外的所有所需运行资源)一旦分配到CPU,就转化为运行状态;

运行状态因某些原因暂停,转化为阻塞状态,需调用阻塞进程原语(上课被打断,阻塞)
运行状态时间片用完后,转化为就绪状态;

唤醒进程原语就是把进程从等待队列移出到就绪队列并设置进程为就绪状态。

7.进程的属性

并发性,动态性,共享性,独立性,制约性

8.操作系统

分时操作系统:允许多个联机用户同时使用一台计算机系统进行计算
批处理操作系统:
连续执行大量作业的系统,按顺序执行一组作业,而不需要用户交互
分布式操作系统:多个计算机之间共享资源和通信的系统
实时操作系统:3种典型的实时系统: 过程控制系统、信息查询系统、事务处理系统

操作系统的任务主要是存储管理、进程管理、设备管理、文件管理、用户接口。

11.I/O操作

I/O操作是指计算机与外部设备(如键盘、鼠标、显示器、磁盘驱动器、网络接口等)之间的数据交换过程。I/O操作是与CPU进行通信的重要方式,

12.排序和查找

查找(最坏比较次数):顺序查找n,,二分查找log2n,长度为n的线性表中寻找最大元素n-1

快速/冒泡/简单插入排序,最坏情况下需要比较次数为n(n-1)/2。快速排序每一次交换会产生新逆序
二分法排序,最坏情况需要比较次数为log2n(二分法只适用于顺序存储的有序表)
堆排序,最坏情况需要比较次数为nlog2n

最坏情况的时间:二分法<堆排序<希尔<快速/冒泡/简单插入,只有二分法和寻找最大项一定小于n

13.数据结构

逻辑结构包括线性结构和非线性结构

线性结构:线性表,栈,队列。所有线性结构都能采用顺序存储。
非线性结构:树形结构,图状结构

存储结构包括顺序存储和链式存储。链式存储的存储单元是不连续的,指针不会有规律地连续变化,头尾指针的动态变化无法决定链表长度

14.栈

1.栈是只能在一端(栈顶)进行插入和删除的线性表

2.顺序栈。

特点:1.栈的修改原则是先进后出;2.栈有top指针和bottom指针,起初都指向bottom,bottom指针始终不变,top指针随着元素的加入向上移,随着元素删除向下移;3.栈有记忆功能;4.栈支持子程序调用

应用:(顺序)栈的存储空间为S(1: n),可以从1-->n开始进,也可以从n-->1开始进。初始状态为top=0以下的,或top=n+1以上的,初始状态都按空栈处理,如下图

3.带链栈。

特点:1.top指针和bottom指针都会随栈的操作而变化;2.入栈操作时不会受栈存储空间的限制而溢出;

应用:top=bottom-->栈中元素0或1个。top=bottom=NULL,栈空;top=bottom≠NULL,栈有1个元素;top≠bottom这种情况无法判断

注意事项:看清楚题目问的是栈中元素个数还是top指针指向! 

15.队列

1.队列只允许在队尾插入,在队头删除的线性表,即尾进头出。队满入不了(上溢),队空退不了(下溢)

特点:1.先进先出(先到先服务);2.rear指针随元素的进入而移动,front指针随元素的删除而移动,因此rear和front共同确定队列中元素个数

2.循环队列

队列的顺序结构一般采用循环队列形式。循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。rear指针指向队尾,front指针指向队头元素的前一个位置,因此从front指针后一个位置开始到rear指针指的位置间所有元素均为队列中的元素。

应用:若循环对列的存储空间为S(1:n),1.rear>front, s=rear-front; 2.rear<front,s=rear+容量-front; 3.rear=front,空/满,=n时为空,≠n时可能空可能满

3.带链对列

特点:1. 在删除和插入元素时,操作更简单;2.队列中的指针域需要额外的存储空间

应用:1.rear=front-->栈中元素0或1个。rear=front=NULL,s=0;rear=front≠NULL,s=1;其他情况无法判断;2.rear>front,s=rear-front;3.rear<front,s=rear+容量-front

总结:1.带链的队列/栈,头针=尾针-->容量0或1,=NULL为0,≠NULL为1,头针≠尾针无法判断 
           2.带链的队列/栈,其链表的长度
不能由头尾指针决定

16. 顺序表,线性链表,双向链表,循环链表

线性表可以采用顺序存储和链式存储,采用顺序存储的叫顺序表,采用链式存储的叫线性链表。链式存储结构中每个结点上包含至少一个指针,通过指针的指向来表示数据的逻辑关系

顺序表的特点:1、线性表中所有元素所占的存储空间是连续的;
2.线性表中数据元素在存储空间中是按逻辑顺序依次存放的;
3.可以随机访问数据元素;
4.做插入、删除时需移动大量元素,因此线性表不便于插入和删除元素。

线性链表特点:1.各数据结点的存储空间可以不连续;
2.各数据元素的存储顺序与逻辑顺序可以不一致;
3.线性表的链式存储所占存储空间大于顺序存储结构(多了指针域);
4.查找结点时链式存储要比顺序存储慢(需要看指针指向,而顺序结构一目了然);
5.链式存储插入删除元素比顺序存储灵活(线性链表进行插入与删除,不需要移动链表中的元素,只需改变指针域)

17.树

所有树都是非线性结构

父结点,子结点:只有一个前件称为父结点
根结点,叶子结点:无前件的称为根(结点),无后件的称为叶子结点
结点的度,树的度:一个结点所拥有后件的个数称为结点的度,所有结点里最大的度称为树的度
树的深度:深度代表几层

计算:①树的总结点数=所有结点的度数和+1=结点个数之和

18.二叉树

二叉树:非空二叉树只有一个根结点,每个结点最多有两棵子树,称为左子树和右子树
满二叉树:除最后一层外,每一层上的结点数均达到最大值。
完全二叉树∶除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少从右边开始的若干结点,因此度为1的结点个数只可能为0或1

关系:满二叉树是完全二叉树的一种情况

存储:①一般二叉树采用链式存储结构 ②只有满二叉树和完全二叉树可以采用顺序存储,但顺序存储不适用于一般二叉树

计算: ①在二叉树的第k层上,最多有2^{k-1}个结点
②深度为m的二叉树最多有2^{m}-1个结点
③度为0的结点总比度为2的结点多一个(仅针对二叉树)
④有n个结点的二叉树深度至少为[log2n]+1,[ ]为取整

19.树的遍历

前序遍历(根左右),中序遍历(左根右),后序遍历(左右根)

前序遍历:ABDGECF(特点:根节点在第一个)
中序遍历:DGBEAFC
后序遍历:GDEBFCA (特点:根节点在最后一个)
特点:①若前序和中序一样,则无左子树 ②前中后序遍历中,DGBE(中序中A的左边)始终在FC(中序中A的右边)左边

20.堆 

堆是一颗完全二叉树,其根节点的值总要大于或小于左右分支结点,不能大于一边又小于另一边

20.程序设计

程序设计分类结构化程序设计,面向对象的程序化设计
程序设计风格:清晰第一(易读性),效率第二

结构化程序设计四大原则:自顶向下,逐步求精,模块化,避免滥用goto语句
结构化程序设计三大基本结构:顺序结构,选择结构(又称分支机构),循环结构(又称重复结构)

面向对象程序设计的五大基本要素:对象,类和实例,消息,继承,多态性
对象的组成:属性(数据)+方法(操作),操作是对象的
动态属性
类-对象的特点:唯一性,分类性,封装性,继承性,多态性,模块独立性,依赖性

21.软件工程

软件组成:程序,数据,相关文档

软件工程的3要素:方法,工具,过程

软件工程过程的4个基本活动:软件规格说明,软件开发或软件设计与实现,软件确认,软件演进

软件生命周期/过程的3阶段:指软件产品从提出、实现、使用维护到停止使用返役的过程

  • 软件定义阶段(可行性研究,需求分析,其中可行性研究是需求分析的上一阶段内容)
  • 软件开发阶段(概要和详细设计,实现,测试)
  • 软件维护阶段(使用,维护,退役)
  • 概要设计任务是概要设计文档评审,详细设计的工具有程序流程图,PAD图等。确认测试阶段的文档是需求规格说明书,确认软件项目是否进行开发的文档是可行性报告

需求分析的方法:(着眼于数据流)结构化分析方法,面向对象的分析方法。前者常用工具包括:数据字典DD,数据流图DFD,判定树,判定表

  • 数据流图DFD作用是支持系统功能建模,表达数据在软件中的流动和处理
  • 数据字典DD作用是

需求分析的工作任务:需求获取,需求分析编写需求规格说明书,需求评审

软件测试是发现错误(实施步骤包括单元,集成,确认测试),软件调试是改正错误

22.软件分类

软件按功能可分为三类:系统软件,应用软件(人事管理系统),支撑/工具软件(编辑软件WPS)

22.扇入数,扇出数

扇入指调用一个给定模块的模块个数,扇出指一个模块直接调用的其他模块个数。如图,最大扇入数为n(看一个模块上方的线),最大扇出数为3(看模块下方的线)

23.白盒测试,黑盒测试 

黑盒测试技术:等价类划分法、边界值分析法、错误推测法、因果图等。测试依据是软件功能的描述
白盒测试方法:逻辑覆盖测试、基本路径测试,其中逻辑覆盖测试包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断-条件覆盖。测试依据是程序内部结构和逻辑

24.数据库概念

数据库系统包含数据库数据库管理系统,数据库管理系统是数据库系统的核心

25.数据模型

1.三部分组成:数据结构,数据操作,数据约束

2.三类型:

 

E-R模型(实体-联系模型):包含实体,联系,属性(有什么属性的实体间有着怎样的联系)。例如学生是实体,学号是属性,课程是实体,课程号是属性。
层次模型:用树形结构表示实体间联系的模型
网状模型:用网络结构表示~
关系模型:用二维表表示~,一列表示一个属性,一行表示一个元组,元组里的元素为元组的属性。其3个组成部分包括数据操纵,数据结构,关系的完整性约束

概念模式(模式)对全局数据逻辑结构描述
逻辑模型面向数据库管理系统且着重于数据在数据库系统一级实现
物理模式(内模式)对数据存储方式和物理结构的逻辑描述
一个数据库只能有1个概念模式和物理模式,可以有多个外模式
外模式
反映用户对数据的要求

26.数据库设计与管理

1. 4个阶段:需求分析,概念设计,逻辑设计,物理设计

  • 概念设计就是把现实世界的数据抽象为E-R模型/图
  • 逻辑设计就是将E-R图转换为关系模式

2. 数据库的6种范式:第一范式(1NF),第二范式(2NF),第三范式(3NF),BCNF,第四范式(4NF),第5范式(5NF)。

3. 判断范式
step1:判断主键和非主键(主键就是能够唯一确定一行的属性,可以是1个或多个)
step2:根据非主键属性与主键间依赖关系判断范式

  • 1NF:属性不可再分即满足第一范式
     例如 关系模式:学生(姓名,住址),而住址又包含(区,街道),该模式不符合1NF
  • 2NF:在1NF基础上,当主键由2或2个以上的属性组成时,每个非主键完全决定于全部主键的组合而不是主键的一部分键(即不存在部分依赖
  • 3NF:不存在非主属性对候选码的传递依赖

27.数据库系统语言

数据定义语言:负责数据的模式定义、数据的物理存取构建
数据操纵语言:负责数据查询、增删改等的操纵
数据控制语言:负责数据完整性、安全性定义、检查及并发控制、故障恢复等。 

27.关系代数

并运算(R∪S) 

交运算(R∩/&S) 

差运算(R-S,R有S没有的部分)

选择运算(选择行\sigma

投影运算(投影列Π)

笛卡尔积运算:R×S

连接运算:自然连接(将相同属性列中相同属性值的元组进行连接)

连接运算:等值连接( 两个二维表中没有相同属性,但两属性间有相同的值,将值相同的元组连接起来,两个属性都保留)

除运算: R÷S(R有S没有的属性)

28.寻址 

寻址分为指令寻址和数据寻址。指令寻址有顺序寻址和跳跃寻址

立即寻址:直接给出操作数本身
直接寻址:给出操作数的地址
间接寻址:给出操作数地址的地址
隐含寻址:操作数的地址隐含在指令的操作码或寄存器中

五  选择题--python语言程序设计

1.变量名

  1. 变量名可由中文字符、字母、数字和下划线组成,不能包含空格和其他特殊字符。
  2. 变量名必须以字母或下划线开头,不能以数字开头。
  3. 变量名不应该与 Python 中的关键字(如if、else、while等)重复。

2.python

python语言属于脚本语言,在运行时通过解释器逐行动态解释执行

3.CSV文件

CSV文件通过单一编码表示字符,每行表示一个一维数据,多行表示多维数据

4.Pyinstaller工具

pyinstaller只能处理UTF-8编码的python源文件,使用参数-F把python源文件打包成一个独立的可执行文件,使用-i指定打包程序使用的图标文件,使用spec文件datas参数设置打包相关资源文件,使用spec文件的binaries参数添加动态链接库

5.字符串

字符串比较大小规则:0<9<A<Z<a<z

一个空格也算一个字符串

6.切片

左闭右开,str[6]表示从左往右数第7个,str[-6]表示从右往左数第6

7.赋值

赋值就是引用,相当于取了个别名,例如a=b,a,b绑定同一地址,其中一个变化另一个也会跟着变化

将多个元素通过逗号赋值给一个变量,会自动将数据加上括号形成元组进行赋值,例如animal = "cat" , "dog", "tiger" , "rabbit"   print(animal)---('cat', 'dog', 'tiger', 'rabbit')

8.一些运算操作 

/除,总是执行浮点除法,即使两个操作数都是整数,结果也是浮点数

//整除取整,%余数

9.一些函数

txt.title()大写首字母,txt.upper()大写所有字母,txt.lower()将所有大写转为小写

tell()返回文件指针当前位置,seek()将文件指针移动到特定位置,即定位文件的读写位置

list.sort( key=None, reverse=None)默认升序,reverse=True为降序(从大到小),key指定按什么标准排序,如key=len表示按长度排序,也可以设置匿名函数key=lambda x : x[1]表示按照元组的第二个元素进行排序

random.randint(a,b)生成一个[a,b]区间的整数,
​​​​​​​random.random()生成[0,1)上随机浮点数,
random.choice(seq)从序列的元素中随机挑选一个元素,
random.shuffle(可变的seq)将序列中所有元素随机排序
random.sample(seq,k)从序列seq中随机抽取k个元素

','.join(x)按指定字符连接列表元素,返回一个字符串列表中元素必须为字符串,否则会报错Typeerror。在 Python 中,用引号‘ ’包裹的是字符串,但在文件中,字符串的表示并不依赖于外部引号。如下,文件内容是一个由字符组成的序列,整个序列为一个字符串

f=open('a.txt','w')
x=['天','地','人']
f.writelines(','.join(x))  #文件内容:天,地,人
f.close()

eval()---​​​​​​​参数必须为字符串类型,计算字符串表达式的值,

input()--输入的数据类型默认为字符串型。无论输入的是整数、浮点数、字符串,总是返回一个字符串

replace()--不会修改原字符串,而是返回一个新的修改后的字符串

int()可将浮点数通过截掉小数部分转换成整数,也可将整数字符串转换成整数,但不能将浮点字符串转换成整数

sep()指定多个要打印的值之间的分隔符,而end()指定print()输出结束时要添加的字符串,默认输出结束时自动添加换行符 \n

str.strip('字符')--去除字符串两端指定字符,如果没有则不去除

str.split('字符')--将字符串按指定符号分隔,并返回元素为字符串类型的list

reverse()直接在原始列表上操作,而不会返回一个新列表

all()当组合类型变量中所有元素都为真时,返回True,元素中只要含有0,None,False就返回False

pow(x,y)--计算x的y次方 

10.函数选择题易错点

(1)有没有调用?
(2)有没有print输出?

10.全局变量&局部变量,简单类型变量&组合类型变量

局部变量在函数执行结束后,局部变量的作用域也就结束了。在函数内部引用数字类型全局变量必须使用global声明,引用组合类型全局变量无需global声明,若是更改全局变量,需要声明。

img1 =[12,34,56,78],img2=[1.2,3,4,5]
def modi():
    img1 = img2
    print(img1)
modi()       #[1.2,3,4,5]
print(img1)  #[12,34,56,78]

简单类型变量(例如整数、浮点数、字符串等)是不可变的。当你传递一个简单类型变量给一个函数时,实际上是传递值,而非变量本身。因此:
1.函数内部对这个值的修改不会影响到原始变量。
2.若要调用函数的话需要用return返回

def modify_int(x):
    x = x + 1
a = 5
print(modify_int(a))  #None
print(a)   #5
def modify_int(x):
    x = x + 1
    return x
x=5
print(modify_int(x))  #6
print(x)   #5

组合类型变量(例如列表、字典、集合等)是可变的。当你传递一个可变类型的变量给一个函数时,实际上是将这个可变对象的引用传递给了函数。因此,
1.函数内部对这个对象的修改会影响到原始变量。 
2.即使没有使用 return 返回,对列表的修改仍然会在函数调用后保留。因此可直接调用函数无需return返回

def modify_list(lst):
    lst.append(4)
a = [1, 2, 3]
modify_list(a)  #直接对a列表进行操作
print(a)  # 输出 [1, 2, 3, 4]

11.python的库

无论是标准库还是第三方库都需要import导入,它们不同于内置函数,内置函数是 Python 语言本身提供的一组函数,可以直接在代码中使用,无需import导入

内置函数: int(),float(),list()等类型转换函数,len(),max(),sorted()等数据结构操作函数,open(),read(),write()等文件操作函数,abs(),round(),sum(),pow()等数学和统计函数,

标准库(即python自带的库):time(处理时间);random;os;turtle(简单图形绘制,goto()是移动画笔位置函数,setup()用于设置画布大小,right()控制顺时针转),

第三方库:pygame(游戏开发方向);scipy,numpy,matplotlib,pandas,seaborn(数据分析及可视化);jeiba(中文分词库),scrapy,requests,grab(爬虫方向),tensorflow,scikit-learn,pytorch,mxnet(深度学习方向即人工智能),SQLAlchemy(操作数据库方向),pillow,PIL,opencv-python(图像处理),PyOCR(图像字符识别方向),PyQt5(图形界面方向),flask,pyramid,Django(Web开发方向),PyMongo,redis-py(数据储存方向);beautifulsoup(文本处理)

11.文件打开模式

'a':追加写
'w':覆盖写
'r':只读
'x':创建写
'b':二进制模式打开
't':文本文件模式打开
'+':读写模式

其中r,w,x,a能与b,t,+组合。例如'a+':追加读写模式;'r+':读写模式,写入时会覆盖原有内容;'w+':写读模式,写入时会清空原有内容

只用open()打开文件,文件内容不会装入内存,print()不会输出文件内容,只有执行读取操作时才会装入内存

12.读写文件 

f.read()读取文件整个内容作为一个字符串
f.readline()读取文件的一行内容作为一个字符串
f.readlines()从文件中读取所有行,每一行形成一个字符串,所有字符串组成一个列表
f.write()向文件写入一个字符串或字符流
f.writelines()将元素为字符串的列表整体写入文件

#a.txt内容为[1,2,3,4]
f=open('a.txt','r')
print(f.read().split(','))  #['['1','2','3','4']']
f.close  
解释:文件内容[1,2,3,4]在Python中是作为一个字符串'[1,2,3,4]'存在的。
f.read()读取整个文件内容作为一个字符串,即'[1,2,3,4]'。
由于整个文件内容中并没有逗号,所以整个文件内容被作为一个元素放在列表中,得到['[1,2,3,4]']
f=open('a.txt','w')
x=['天','地','人']
f.writelines(','.join(x))  #文件内容:天,地,人
f.close()

seek()将文件指针移动到特定位置,即定位文件的读写位置

文件包括文本文件和二进制文件两种类型

13.条件判断

'if flag:' ,'while flag:' --整数不为0为True,not flag则为False;字符串不为空为True

bool: True--非0数字,非空容器,非空字符串

切片默认左闭右开

14.循环结构里的缩进

若print()在循环里面,则每循环一次都会print一次,显示循环次数个结果;若在循环外面(即print与for/while对齐),则只print最后一次的结果

15.数据维度

一维数据由对等关系数据构成,采用线性方式组织,主要采用列表形式表示;二维数据由关联关系数据构成,采用二维表格方式组织,采用列表CSV文件等表示;高维数据由键值对类型数据构成,采用对象方式组织,主要采用张量形式表示。

列表可以表示一维数据,也可通过多层列表表示二维数据或多维数据
CSV文件既能存储一维数据,也能存储二维数据,不适合高维
JSON格式可表示高维数据
 

16.数据类型 

序列类型(列表,元组,字符串),映射类型(字典),集合类型(集合set),数字类型等,另外还可以分为组合数据类型(列表,元组,字符串,字典,集合)

集合无重复且无序,字典无序

16.字典操作方法

d.keys():返回所有键的信息。
d.values():返回所有值的信息。
d.items():返回由键值对构成的元组
d.get(key,default):键存在则返回相应值,否则返回默认值default。
        易错:d.get(key)[0]输出的是第一个元素字符串,而d.get(key)输出的是一个列表
d.pop(key,default):键存在则返回相应值,同时删除键值对,否则返回默认值default。
d.popitem():随机从字典中取出一个键值对,以元组(key,value)形式返回,同时将该键值对从字典中删除。
d.clear():册除所有键值对,清空字典。
max(d)和min(d)都是对字典的键进行比较而不是值
d['key']通过键来索引值,也可通过键修改值

17.列表的操作方法

li.insert(i,x):在列表第i个位置后面插入x ,要注意:如果往一个列表插入多个元素,i值会变化

18.函数的参数

参数=形参(必备参数a,默认参数a=6)+实参(位置参数,关键字参数)

实参通过参数名指定传给某个形参如c=9,我们叫做关键字参数

位置参数传递值给形参中的默认参数,则用位置参数的值

def add(x, y):
    return x + y
add(3, 5)     #通过位置参数传入形参
add(y=5,x=3)  #通过关键字参数传入形参
def maxmin(a=10,b=5,c=2):
    return max(a, b, c) + min(a, b, c)
print(maxmin(1, b=10))   #此时a=1,b=10,c=2
print(maxmin(2)   #此时a=2,b=5,c=2

19.匿名函数

匿名函数用lambda创建,可以有任意数量的参数但只能有一个表达式,语法格式为如下,其中argument为参数,可以有多个用逗号隔开,expression为表达式。属于可调用对象

abc = lambda arguments: expression

add = lambda x, y: x + y
result = add(3, 5)
print(result)  # 输出结果为 8

20.continue和break

continue跳过本次循环的剩余部分,继续下一次循环
break终止当前整个循环

六 选择题关键字

1.白盒测试方法:覆盖路径动态
2.带链0或1:rear=front=Null--0,rear=front=其他--1
   循环队列空或满:rear=front=m空,rear=front=其他满或空
3.度+1=结,0比2多1
4.看到定义函数,首先要看是否调用

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值