美文网首页
计算机二级Python易忘考点整理

计算机二级Python易忘考点整理

作者: equationl | 来源:发表于2019-04-04 21:01 被阅读0次

    事先声明,这里记录的是我刷二级题时遇到的不熟悉的问题时记录下来的笔记。可能并不适合所有人,仅供参考。

    任何问题请联系邮箱:admin@likehide.com (因为不常上网站,所以留言和私信可能无法及时回复)

    个人介绍:业余“开发者”一枚,Python为其启蒙语言,但已经很久没有认真写过Python直到不久前突然想考计算机二级,于是慢慢开始刷二级Python题库。

    一、语法或函数

    本项主要记录刷题时经常遇到,但我使用较少,或完全没有使用过的语法或函数
    以下函数解释多来自于:菜鸟教程

    1. id([object])
    • 获取对象内存地址
    • object -- 对象
    • 返回对象的内存地址。
    • 例:
    x = "abc"
    y = "abc"
    print(id(x)==id(y))
    
    输出:True
    
    1. list.extend(seq)
    • 添加列表内容
    • seq -- 元素列表。
    • 该方法没有返回值,但会在已存在的列表中添加新的列表内容。
    • 例:
    aList = [123, 'xyz', 'zara', 'abc', 123];
    bList = [2009, 'manni'];
    aList.extend(bList)
    
    print "Extended List : ", aList ;
    
    输出:
    Extended List :  [123, 'xyz', 'zara', 'abc', 123, 2009, 'manni']
    
    1. list.insert(index, obj)
    • 函数用于将指定对象插入列表的指定位置。
    • index -- 对象 obj 需要插入的索引位置。
      obj -- 要插入列表中的对象。
    • 该方法没有返回值,但会在列表指定位置插入对象。
    aList = [123, 'xyz', 'zara', 'abc']
    
    aList.insert( 3, 2009)
    
    print "Final List : ", aList
    
    输出:
    Final List : [123, 'xyz', 'zara', 2009, 'abc']
    
    1. lambda 语法
      详见:lambda

    2. 三元运算:

    val = 1 if 条件 else 2
    
    条件为True时val=1
    否则=2
    
    1. Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
    下列对象的布尔值都是False:
    
    NONE;
    
    False(布尔类型)
    
    所有的值为零的数
    
           0(整型)
    
           0.0(浮点型)
    
           0L(长整型)
    
           0.0+0.0j(复数)
    
    ""(空字符串)
    
    [](空列表)
    
    ()(空元组)
    
    {}(空字典)
    
    1. divmod(a, b)
    • 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
    • a-- 数字
      b--数字
    • 例:
    >>>divmod(7, 2)
    (3, 1)
    >>> divmod(8, 2)
    (4, 0)
    >>> divmod(1+2j,1+0.5j)
    ((1+0j), 1.5j)
    
    1. str.strip([chars])
    • 用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
      注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
    • chars -- 移除字符串头尾指定的字符序列。
    • 返回移除字符串头尾指定的字符生成的新字符串。
    1. str.count(sub, start= 0,end=len(string))
    • 用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
    • sub -- 搜索的子字符串
      start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
      end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
    • 该方法返回子字符串在字符串中出现的次数。
    1. str.join(sequence)
    • 用于将序列中的元素以指定的字符连接生成一个新的字符串。
    • sequence -- 要连接的元素序列。
    • 返回通过指定字符连接序列中元素后生成的新字符串。
    str = "-";
    seq = ("a", "b", "c"); # 字符串序列
    print str.join( seq );
    
    输出:a-b-c
    
    1. str.upper()
    • 方法将字符串中的小写字母转为大写字母。
    • 返回小写字母转为大写字母的字符串。
    1. list.sort(cmp=None, key=None, reverse=False)
    • 用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。
    • cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
      key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
      reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
    • 该方法没有返回值,但是会对列表的对象进行排序。
    1. chr(i)
    • chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
    • i -- 可以是10进制也可以是16进制的形式的数字。
    • 返回值是当前整数对应的ascii字符。
      注:在3.x 中,chr() 和 ord() 默认支持unicode
      ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。
    1. raise [Exception [, args [, traceback]]]
    • 使用raise语句自己触发异常
    • Exception 异常的类型(例如,NameError)参数标准异常中任一种
      args 自已提供的异常参数。
      traceback 在实践中很少使用该参数,跟踪异常对象。
    一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。
    
    定义一个异常非常简单,如下所示:
    def functionName( level ):
        if level < 1:
            raise Exception("Invalid level!", level)
            # 触发异常后,后面的代码就不会再执行
    
    s = None
    if s is None:
        raise NameError 
    print 'is here?' #如果不使用try......except这种形式,那么直接抛出异常,不会执行到这里
    
    1. str.center(width[, fillchar])
    • 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。默认填充字符为空格。
    • width -- 字符串的总宽度。
      fillchar -- 填充字符
    • 该方法返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。
    >>>str = 'runoob'
    >>> str.center(20, '*')
    '*******runoob*******'
    >>> str.center(20)
    '       runoob       '
    
    1. format
    print("{0:{2}^{1}}".format("a", 10, "*"))
    
    输出:
    ****a*****
    
    1. 字符串的比较
    1、比较字符串是否相同:
    
    ==:使用==来比较两个字符串内的value值是否相同
    
    is:比较两个字符串的id值。
    
    2、字符串的长度比较
    
    len():显示字符串的长度,返回数字整型。可以进行长度的比较。
    
    3、使用比较运算符
    
    >、<、> = 、< =、比较的规则为:从第一个字符开始比较,排序在前边的字母为小,当一个字符串全部字符和另一个字符串的前部分字符相同时,长度长的字符串为大。
    
    1. 转义字符:


      转义字符.png
    2. ** 运算是右结合的:

    >>> 2**2**3
    256
    而非:
    >>> 2**2**3
    64
    
    运算时先运算 2**3 = 8
    再运算 2**8 = 256
    
    1. file.isatty()
      判断文件是否连接到一个终端设备,如果是,返回True,如果否,返回False。

    2. a = [0,1,2,3,4,5,6,7,8,9]
      b = a[i:j] 表示复制a[i]到a[j-1],以生成新的list对象
      b = a[1:3] 那么,b的内容是 [1,2]
      当i缺省时,默认为0,即 a[:3]相当于 a[0:3]
      当j缺省时,默认为len(alist), 即a[1:]相当于a[1:10]
      当i,j都缺省时,a[:]就相当于完整复制一份a了
      b = a[i:j:s]这种格式呢,i,j与上面的一样,但s表示步进,缺省为1.
      所以a[i:j:1]相当于a[i:j]
      当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
      所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍。所以你看到一个倒序的东东

    3. 链式比较:
      a < b < c 等价于 a < b and b < c
      而非 (a < b) < c

    4. for else
      当迭代的对象迭代完并为空时,位于else的子句将执行,而如果在for循环中含有break时则直接终止循环,并不会执行else子句。

    for i in range(10):
        if i == 5:
            print 'found it! i = %s' % i
    else:
        print 'not found it ...'
    
    输出:
    found it! i = 5
    not found it ...
    
    for i in range(10):
        if i == 5:
            print 'found it! i = %s' % i
            break
    else:
        print 'not found it ...'
    
    输出:
    found it! i = 5
    
    1. str.isdigit()
    • 检测字符串是否只由数字组成。
    • 如果字符串只包含数字则返回 True 否则返回 False。
    1. str.isalpha()
    • 检测字符串是否只由字母组成。
    • 如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
    1. pow()
    • math.pow( x, y ) 或内置
    • pow(x, y[, z])
    • 函数是计算x的y次方,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z

    注意:pow() 通过内置的方法直接调用,内置方法会把参数作为整型,而 math 模块则会把参数转换为 float。

    >>> type(pow(2, 3))
    <class 'int'>
    >>> type(pow(2.0, 3))
    <class 'float'>
    >>> pow(2, 3)
    8
    >>> pow(2.0, 3)
    8.0
    >>> 8 == 8.0
    True
    >>> 8.0 == 8
    True
    
    1. dict.get(key, default=None)
    • 返回指定键的值,如果值不在字典中返回默认值
    • key -- 字典中要查找的键。
      default -- 如果指定键的值不存在时,返回该默认值值。
    • 返回指定键的值,如果值不在字典中返回默认值None。
    dict = {'Name': 'Zara', 'Age': 27}
    
    print "Value : %s" %  dict.get('Age')
    print "Value : %s" %  dict.get('Sex', "Never")
    
    输出:
    Value : 27
    Value : Never
    
    1. str.split(str="", num=string.count(str))
    • 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
    • str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
      num -- 分割次数。默认为 -1, 即分隔所有。
    • 返回分割后的字符串列表。
    str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
    print str.split( );       # 以空格为分隔符,包含 \n
    print str.split(' ', 1 ); # 以空格为分隔符,分隔成两个
    
    输出:
    ['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
    ['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
    
    ls =list({'shandong':200, 'hebei':300, 'beijing':400})
    print(ls)
    
    输出:
    ['shandong', 'hebei', 'beijing']
    

    二、常见 Python 框架

    1. caffe:是一个清晰,可读性高,快速的深度学习框架
    2. RoboBrowser:轻量级爬虫、自动化测试库
    3. newspaper:python爬取新闻常用的库
    4. Grab:爬虫框架
    5. scipy:数据分析与处理
    6. pandas:数据分析与处理
    7. moviepy:视频处理
    8. prefile:代码性能分析
    9. openpyxl:读写excel
    10. Django:WEB框架
    11. PyGObject:图形界面
    12. wxPython:图形界面
    思维导图

    三、常用第三方库--jieba

    基本用法

    1. 精准模式:
      将字符串分割成等量的中文词组,返回结果是列表类型。
    >>>import jieba
    >>>ls = jieba.lcut("全国计算机等级考试Python科目")
    >>>print(ls)
    ['全国','计算机','等级','考试','Python','科目']
    
    1. 全模式:
      将字符串的所有分词可能均列出来,返回结果是列表
      类型,冗余性最大。
    >>>import jieba
    >>>ls = jieba.lcut("全国计算机等级考试Python科目", cut_all=True)
    >>>print(ls)
    ['全国','国计','计算','计算机','算机','等级','考试','Python','科目']
    
    1. 搜索引擎模式:
      该模式首先执行精确模式,然后再对其中长词进一步切分获得最终结果。
    >>>import jieba
    >>>ls = jieba.lcut_for_search("全国计算机等级考试Python科目")
    >>>print(ls)
    ['全国','计算','算机','计算机','等级','考试','Python','科目']
    
    1. 增加单词:
    >>>import jieba
    >>>jieba.add_word("Python科目")
    >>>ls = jieba.lcut("全国计算机等级考试Python科目")
    >>>print(ls)
    ['全国,'计算机','等级','考试','Python科目']
    

    模式选择

    搜索引擎模式更倾向于寻找短词语,这种方式具有一定冗余度,但冗余度相比全模式较少。 如果希望对文本准确分词,不产生冗余,只能选择jieba.lcut(s)函数,即精确模式。如果希望对文本分词更准确,不漏掉任何可能的分词结果,请选用全模式。如果没想好怎么用,可以使用搜索引擎模式。

    实例

    统计红楼梦词频,并输出前十五的词语和词频

    import jieba
    f = open("红楼梦.txt", "r")
    txt = f.read()
    f.close()
    words = jieba.lcut(txt)
    counts = {}
    for word in words:
      if len(word) == 1: #排除单个字符的分词结果
        continue
      else:
        counts[word] = counts.get(word,0) + 1
    items = list(counts.items())
    items.sort(key=lambda x:x[1], reverse=True)
    for i in range(15):
      word, count = items[i]
      print ("{0} {1}".format(word, count))
    

    输出:

    宝玉 3748
    什么 1613
    一个 1451
    贾母 1228
    我们 1221
    那里 1174
    凤姐 1100
    王夫人 1011
    你们 1009
    如今 999
    说道 973
    知道 967
    老太太 966
    起来 949
    姑娘 941
    

    排除无用词语:

    excludes = {"什么","一个","我们","那里","你们","如今", \
    "说道","知道","老太太","起来","姑娘","这里", \
    "出来","他们","众人","自己","一面","太太", \
    "只见","怎么","奶奶","两个","没有","不是", \
    "不知","这个","听见"}
    for word in excludes:
      del(counts[word])
    

    四、数据结构与储存

    数据结构

    1. 数据结构包括存储结构和逻辑结构。
    2. 同一种逻辑结构的数据可以采用不同的存储结构,但影响数据处理的效率。
    3. 数据结构:
      逻辑结构:线性结构{顺序、链表、栈、队列}、非线性结构{树、二叉树、图}〉、
      存储结构〈顺序、链接、索引〉
    4. 在树的结构中,一个结点所拥有的后件(子树)的个数称为该结点的度;所有结点中最大的度称为树的度;树的最大层次称为树的深度。
      例题:一棵树的度为4,其中度为4,3,2,1的结点的个数分别为2,3,3,求叶子结点的个数
      答案:16个(树状图法求解)
    5. 在二叉树的第k层上最多有2的(k-1)次方(k≥1)个结点。
      满二叉树的叶子节点数为 2的(n-1)次方个。
      深度(层数)为m的二叉树最多有2的m次方-1个结点。
      在任意一棵二叉树中,度数为0的结点(即叶子结点)总比度为2的结点多一个。
    6. 二叉树遍历:
      前序遍历:根左右
      中序遍历:左根右
      后序遍历:左右根
      参见
    7. 二分法查找最坏情况下,需要比较的次数为(log以2为底n的对数)次
    8. 树的根结点数量可以为0或1
    9. 关系表中的每一横行称为一个元组
    10. 相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和冗余性

    数据库

    1. 数据库系统(DBS) :由数据座(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(硬件)、软件平台(软件)五个部分构成的运行实体。
    2. 数据库系统的三级模式
      概念模式:数据库系统中全局数据逻辑结构的描述,是全体用户(应用)公共数据视图。
      外模式:也称子模式或用户模式,它是用户的数据视图,也就是用户所见到的数据模式,它由概念模式推导而出。
      内模式:又称物理模式,它给出了数据库物理存储结构与物理存取方法。
    3. 在数据库技术中, 为提高数据库的逻辑独立性和物理独立性, 数据库的结构被划分为用户级、 存储级和概念级。
    4. 数据库技术的根本目标是要解决数据的共享问题
    5. 数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及数据的储存结构
    6. 数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和物理设计
    7. 对于数据库系统,负责定义数据库内容,决定存储结构和存取策略及安全授权等工作的是:数据库管理员
    8. 数据库系统依靠模式分级,各级模式之间的映射支持数据的独立性。

    五、杂项(公共基础知识)

    1. Python是一种解释型、面向对象、动态数据类型的高级程序设计语言
    2. 程序设计风格:清晰第一,效率第二。
      结构化程序设计原则:自顶向下,逐步求精,模块化,限制使用goto语句(Python无 goto 语句)。
      模块设计要求:高内聚,低耦合。
    3. 面对对象基本特点:继承性、多态性、封装性
    4. 软件的概念:
      软件包括程序、数据、及相关文档的完整集合。
      机器能执行的是程序、数据,不能执行的是文档。
      工程化的3个要素:方法、工具、过程
      软件的生命周期:提出、实现、使用、维护、停止使用、退役
      原则:抽象、信息屏蔽、模块化
      具有:局部化、确定性、一致性、完备性、可验证性
    5. 在程序流程图中,用带有箭头的线段表示控制流;在数据流程图中,用带有箭头的线段表示数据流。
    6. 软件测试目的:尽可能多地发现程序中的错误,不能也不可能证明程序没有错误。
    7. 测试方法:白盒测试(测试软件内部方法:逻辑覆盖基本路径测试)黑盒测试(测试软件外部即在软件接口处进行,主要完成软件功能验证方法:等价步、划分法、边界值、分析法、错误推断法、因果图等)
    8. 软件设计包括软件的结构、数据接口和过程设计(系统结构部件转换成软件的过程描述)
    9. 软件开发模型包括 Ⅰ、瀑布模型 Ⅱ、扇形模型 Ⅲ、快速原型法模型 Ⅳ、螺旋模型Ⅰ、Ⅲ、Ⅳ
    10. 软件生命周期的主要活动阶段:需求分析
    11. pip升级pip:pip install -U pip
    12. 忘记模块用法?使用 dir(模块名) 即可查看该模块包含的函数;使用help(模块名)即可查看详细文档
      dir
      help
    1. 整数类型有4种进制表示,十进制、二进制(0b)、八进制(0o)、十六进制(0x)
    2. 软件需求规格说明书的作用不包括:软件可行性研究的依据
    3. 将E—R图转换到关系模式时,实体与联系都可以表示成
    4. 数据处理的最小单位是数据项
    5. 软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指:系统结构部件转换成软件的过程描述
    6. 软件开发离不开系统环境资源的支持,其中必要的测试数据属于:辅助资源
    7. 下列路径表示错误的是:F:\PythonTest\abc.txt
      可用表示方式:F:\PythonTest\abc.txt F:/PythonTest/abc.txt F://PythonTest//abc.txt
    8. 映射类型是“键值”数据项的组合,每个元素是一个键值对,元素之间是无序的。
    9. binary 二进制的
      octal 八进制的
      hexadecimal 十六进制的
      decimal 十进制的
    10. 如果改变一个数值类型变量的值,变量的内存地址就会改变
    11. 单分支结构指只有if语句,没有else语句的分支结构
    12. 以下选项,不属于程序流程图基本元素的是:
      A.判断框
      B.循环框
      C.连接点
      D.起始框
      答案:B
    13. 函数:
      函数是一种功能抽象
      使用函数后,代码的维护难度降低了
      函数名可以是任何有效的Python标识符
      使用函数的目的只是为了增加代码复用(错误)
    14. 软件开发的结构化生命周期方法将软件生命周期划分成:
      定义、开发、运行维护

    相关文章

      网友评论

          本文标题:计算机二级Python易忘考点整理

          本文链接:https://www.haomeiwen.com/subject/ghlcbqtx.html