一、概况
上机考试,考试时长 120 分钟,满分 100 分。
Windows7操作系统,建议 Python 3.4.2 至 Python 3.5.3 版本,IDLE 开发环境。
单项选择题 40 分( 含公共基础知识部分 10 分,数据结构与算法和python基础知识 30 分 )。
****选择题20分以下直接暴毙,所以把握基础很重要****
操作题 60 分( 包括基本编程题 40 分和综合编程题 20 分 )。
****注意合理分配时间,该扔的扔,真男人不只有 刚 一条路可以走****
二、试题类型分析
1.单选题:单选题主要是由计算机基础、数据结构与算法和python基础知识三个部分组成,前两个部分是二级必考,第三部分则是python特有,分值占比会大一些,但绝大部分都是基础题,熟练掌握基础便可获得大部分分数。
2.基础编程题:题目会给一段写好的代码,描述代码作用,或者告知代码描述,让填写缺失的代码。这需要考生具备一定的代码阅读水平,才能准确完成题目。
3.编程题:一道自由度比较高的题目,需要调用各种和python编程相关的知识来解决,熟练掌握基础是过关的秘诀。
三、考试内容
1.python基本语法和元素(综合难度:⭐)
(1)程序的格式框架、缩进、注释、变量、命名、保留字、数据类型、赋值语句、引用。(难度:⭐)
(2)掌握常规的的IO读写,eval()、input()、print()的用法。(难度:⭐)
(3)掌握关键保留字(难度:⭐⭐)
from,import
true,false
if,elif,else,is,in,and,not,or
for,while,continue,break
assert,try,except,finally,raise
def,lambda,return
whit,as
class,del,pass,gloabl,nonlocal,none,yield
****关于eval()函数,深入了解请进传送门https://blog.csdn.net/qq_29883591/article/details/53443062****
#lambda 匿名函数
g = lambda x:x+1
print(g(1)) #运行结果:2
#nonlocal 用来在函数或其他作用域中使用外层(非全局)变量。
#global 定义全局变量
a = 100
def outer():
b = 10
def inner():
nonlocal b # 声明外部函数的局部变量
print("inner b:", b)
b = 20
global a # 声明全局变量
a = 1000
inner()
print("outer b:", b)
outer()
print("a:", a) #运行结果:inner b: 10 outer b: 20 a:1000
#yield 用起来像return。yield在告诉程序,要求函数返回一个生成器
def createGenerator():
for i in range(3):
yield i*i
print(createGenerator()) #运行结果:<generator object createGenerator at 0x000002C9737C42E0>
#raise 抛出异常
2.基本数据类型(综合难度:⭐⭐)
(1)数字类型:包括int(整数类形)、float(浮点数类型)、complex(复数类型)和bool(布尔型,数字里面的布尔型不是指True和False,指的是1和0)。
下面为需要掌握的相关函数:
divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
abs() 函数返回数字的绝对值。
pow() 方法返回 xy(x的y次方)的值。
round(x,n)返回浮点数x四舍五入后保留n位小数的值。
min(),max()会返回给定序列的最小/最大值。
(难度:⭐)
(2)字符串类型:需要掌握引索、切片以及基本的format()格式化的方法。
以下为需掌握的函数:
chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
ord() 函数是 chr() 函数(对于8位的ASCII字符串)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值。
oct() 函数将一个整数转换成8进制字符串。
hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。
len() 方法返回对象(字符、列表、元组等)长度或项目个数。
str()返回一个对象的string格式。
str也内置了很多对字符串进行操作的函数:
string.upper()转换string 中的小写字母为大写
string.lower()转换string 中的小写字母为小写
string.capitalize()把字符串的第一个字符大写
string.find(str,beg=0, end=len(string)) 检测 str 是否包含在 string 中,如果 beg 和end 指定范围,则检查是否包含在指定范围内,如果是返回 开始的索引值,否则返回-1。
string.join(seq)以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串。
string.rfind(str,beg=0,end=len(string) ) 类似于 find()函数,不过是从右边开始查找。
(难度:⭐⭐)
(3)数据类型的判断转化
熟练运用int()、float()、str()根据条件进行转化。(难度:⭐)
import math
a, b, c ,d, e = map(float, input("请输入5个数:").split())
print("以第一个数为半径的圆的面积:{}".format(math.pi * a**2))
b = round(b, 0)
c = round(c, 0)
print("以第二第三个数分别取四舍五入组成复数:{0}\n求模:{1}".format(complex(b, c), (pow(b, 2)+pow(c, 2))**0.5))
print("第四第五个数的商和余数的元组:{}".format(divmod(d, e)))
string = input("请输入一个字符串(注意中间加个_):")
print("将字符串从中间_处切成两块:{}".format(string.split("_")))
print("以 string 作为分隔符,将字符串'123'合并为一个新的字符串:", string.join("123"))
print("字符串长度为:", len(string))
print("转换string 中的小写字母为大写:", string.upper())
print("转换string 中的大写字母为小写:", string.lower())
print("把字符串的第一个字符大写:", string.capitalize())
print("检测'b'是否包含在 string 中(左面开始):", string.find("b"))
print("检测'b'是否包含在 string 中(右面开始):", string.rfind("b"))
print("string切片处理:", string[0:3]) #遵循左闭右开原则
3.程序的控制结构(综合难度:⭐⭐)
(1)了解三种控制结构:顺序结构、分支结构、循环结构(难度:⭐)
(2)重点把握分支结构(难度:⭐)
单分支结构 if à if à if,所有if都处在同一级
双分支结构 if à else if,判断if后会出现下一级else if
多分支结构 if à else ifà else,如果前面所有条件都不满足,最后一级else便不用进行条件判断直接进入。
(3)程序的循环结构(难度:⭐⭐)
while 引导的无限循环
for 引导的遍历循环
continue 跳过本轮循环
break 跳出循环
(4)异常处理:掌握try-except的用法(难度:⭐⭐)
#九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print("{0}*{1}={2} ".format(j, i, j*i), end = "")
if j == i:
print("\n")
4.函数和代码的复用(综合难度:⭐⭐)
(1)def定义函数:函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(),任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数,return 表达式 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
(2)函数的参数(难度:⭐⭐)
默认参数:使用默认参数的时候,如果给形参传递了实参,则形参会接收实参的值。如果没有给这个形参传递实参,则形参会采用默认值。
位置参数:实参和形参的数量上必须要保持一致。
关键字参数:通过定义关键字获取实参的值,与形参的顺序无关。
可变参数:形参的数据会根据实参的数量的变化而变化。
(3)变量的作用域:区分好局部变量与全局变量的作用范围。(难度:⭐)
5.组合数据类型(综合难度;⭐⭐)
(1)列表(序列)(难度:⭐⭐)
序列都可以进行的操作包括索引,切片,加,乘,检查成员,此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法,序列是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现,下面是一些需要掌握的对列表的一些操作。
list.append(obj)在列表末尾添加新的对象
list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.insert(index,obj)将对象插入列表
list.pop([index=-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj)移除列表中某个值的第一个匹配项
list.reverse()反向列表中元素
list.sort(cmp=None,key=None, reverse=False)对原列表进行排序
list.count(obj)统计某个元素在列表中出现的次数
list = [85, 69, "lp", "gctj", [5, 6]]
print("列表为", list)
print("在列表末尾添加新的对象'404' :{}".format(list.append("404")), list)
print("在列表末尾一次性追加[1,2,3,4]:", list.extend([1,2,3,4]), list)
print("将对象'404'插入列表末尾:", list.insert(-1,"404"), list)
print("移除list[1]并返回该元素的值 :", list.pop(1), list)
print("移除列表中'404'的第一个匹配项:", list.remove("404"), list)
print("反向列表:", list.reverse(), list)
print("统计'404'在列表中出现的次数:", list.count("404"))
list2 = [3,89,51,46,589,2]
print("对列表2按升序排序 :", list2.sort(reverse=False), list2)
print("对列表2按降序排序 :", list2.sort(reverse=True), list2)
(2)元组(难度:⭐)
Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。此外,元组中只包含一个元素时,需要在元素后面添加逗号。
(3)字典(难度:⭐⭐⭐)
字典是另一种可变容器模型,且可存储任意类型对象,字典的每个键值key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号{}中。键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一;值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
字典需要掌握一下方法:
dict.clear()删除字典内所有元素
dict.copy()返回一个字典的浅复制
dict.fromkeys(seq[, val])创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
dict.get(key,default=None)返回指定键的值,如果值不在字典中返回default值
dict.has_key(key)如果键在字典dict里返回true,否则返回false
dict.items()以列表返回可遍历的(键, 值) 元组数组
dict.keys()以列表返回一个字典所有的键
dict.update(dict2)把字典dict2的键/值对更新到dict里
dict.values()以列表返回字典中的所有值
dict.pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。否则,返回default值。
dict.popitem()返回并删除字典中的最后一对键和值。
dic = {"il":5, "oj":45, "yub":74, 1:1}
print("浅复制字典", dic.copy())
print("创建一个新字典:{}".format(dic.fromkeys([1, 2, 3])), dic)
print("返回指定键1的值:", dic.get(1))
#print("判断键'oj'是否在字典里:", dic.has_key("oj")) #会因版本兼容问题报错
print("返回可遍历的(键, 值):", dic.items())
print("返回所有的键:", dic.keys())
print("返回所有的值:", dic.values())
print("返回并删除字典中的最后一对键和值:", dic.popitem(), dic)
print("把键/值对{3:'l'}更新到dic里:", dic.update({3:'l'}), dic)
print("删除字典给定键 key 所对应的值,返回值为被删除的值:", dic.pop(3), dic)
print("清空字典:", dic.clear(), dic)
(4)集合(难度:⭐⭐)(大纲中没有)
集合(set)是一个无序的不重复元素序列,可以使用大括号{}或者set()函数创建集合,注意:创建一个空集合必须用 set() 而不是{},因为{}是用来创建一个空字典。
下面是集合的一些操作:
set.add(x)元素x添加到集合s中,如果元素已存在,则不进行任何操作。
set.remove(x)将元素x从集合s中移除,如果元素不存在,则会发生错误。
len(s) 计算集合s元素个数。
set.clear() 清空集合s。
set.pop()随机移除元素
s1.symmetric_difference(s2)返回两个集合中不重复的元素集合
s1.union(s2)返回两个集合的并集
s1.symmetric_difference_update(s2)移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
s1.difference(s2)返回多个集合的差集
set = {1, 2, 7, 6}
print("元素'h'添加到集合s中:{}".format(set.add("h")), set)
print("元素'h'从集合s中移除:", set.remove("h"), set)
print("随机移除元素 :", set.pop(), set)
print("清空集合:", set.clear(), set)
set1 = {1,5,9,6,7}
set2 = {5,9,2,0,8}
print("两个集合中不重复的元素集合:", set1.symmetric_difference(set2))
print("两个集合的并集:", set1.union(set2))
print("两个集合的差集:", set1.difference(set2))
print("移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中:", set1.symmetric_difference_update(set2), set1)
6.文件和数据格式化(综合难度:⭐⭐⭐)
(1)文件的打开、关闭和读写(难度:⭐⭐)
open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出OSError。完整的语法格式为:
open(file,mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
文件打开模式:
x 写模式,新建一个文件,如果该文件已存在则会报错
b二进制模式
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
+打开一个文件进行更新(可读可写)。
互不冲突的打开模式可以可以进行叠加,比如ab表示以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
file.close() 关闭文件。关闭后文件不能再进行读写操作
(2)对一维数据和二维数据的表示、储存和处理以及采用CSV格式对一二维数据的文件的读写。(难度:⭐⭐⭐)
****一维二维数据,深入了解请进传送门https://www.xiaoheidiannao.com/11390.html****
7.python中的库(综合难度:⭐⭐⭐,需要记忆的量大)
(1)turtle库(必选)(难度:⭐⭐)
绘制状态函数:pendown()、penup()、pensize()以及对应别名为pd()、pu()、width();
颜色控制函数:color()、pencolor()、begin_fill()、end_fill();
运动控制函数:forward()、backward()、right()、left()、setheading()、goto()、circle()以及对应别名fd、bk()、rt()、lt()、seth()
(2)random库(必选)
考查seed()、random()、randint()、getrandbits()、randrange()、uniform()、choice()、shuffle()、sample()
(3)time库(可选)
时间处理函数:time()、gmtime()、localtime()、ctime()
时间格式化函数:mktime()、strftime()、strptime()
计时函数:sleep()、perf_counter()
(4)PyInstaller库(必选)
记住pyinstaller打包文件的命令pyinstaller-Fc:\...\your_python_file.py即可
(5)jieba库(必选)
jieba.lcut()
(6)wordcloud库(可选)
(7)更广泛的 Python 计算生态,只要求了解第三方库的名称,不限于以下领域:
网络爬虫:requests、scrapy、pyspider
数据分析:numpy、pandas、scipy
文本处理:pdfminer、python-docx、beautifulsoup4
数据可视化:matplotlib、seaborn、mayavi
用户图形界面:PyQt5、wxPython、PyGObject
机器学习:scikit-learn、TensorFlow、mxnet
Web开发:Django、pyramid、flask
游戏开发:pygame、Panda3D、cocos2d
四、必备网站
计算机二级官网:http://ncre.neea.edu.cn/
刷题交流网站python123:https://python123.io/ ****很多人推荐,我瞅了眼感觉也可,推一波!****