相较于各类Python基础教程和二级经验分享类文章,个人认为如果只是想要考取计算机二级证书的话,最快且有效的方法应是在明晰考纲的前提下有针对性的进行学习,达到以最短时间考取证书的目的。
因此除真题外,本篇重点在于总结Python二级考试中的编程题(占60分)的考查内容及知识点总结,让Python小白能在一周内掌握绝大多数编程题的解题方法,顺利考取证书,为未来应聘岗位添砖加瓦!
在教育部考试中心每年发布的参考教材和计算机等级考试官网(最新考纲链接)上可以查到考查范围。顺便提一下考纲中的大部分内容都十分基础,可以给初学者用来入门Python,如果有小伙伴刚好想要入门这门语言的话,顺带考个证书会是个不错的选择~下面详细介绍一下考试题型和考试环境:
因篇幅限制,本文将先针对基本操作题进行总结与讲解,剩余的2道简单应用题和一道综合应用题将在下篇中进行详细介绍。例题均来源于网络某真题模拟软件(实践证明考试时确实遇到不少原题!!!),故相信本次总结也大概率能涉及大部分考试题目。
基本操作题这部分内容考查范围较广,基本涵盖了整个考纲当中各大章节的知识,需要一定的积累(刷题),一共3道题各5分,题目只需要考生补充部分代码即可,问题的描述如下:“考生文件夹存在一个文件PY101.py,请写代码替换横线,不修改其他代码,实现以下功能:xxx问题”。
以下为摘自近10套真题试卷的题目及答案(题目仅供学习参考,请勿商用!):
// 考生文件初始代码
s = input("请输入一个字符串:")
print("{______}".format(s))
// 参考答案
s = input("请输入一个字符串:")
print("{:*^30}".format(s))
// 考生文件初始代码
a, b = 0, 1
while ______:
print(a, end=',')
a, b = ______
// 参考答案
a, b = 0, 1
while a <= 50:
print(a, end=',')
a, b = b, a+b
// 考生文件初始代码
import jieba
txt = input("请输入一段中文文本:")
______
for i in ls[::-1]:
______
// 参考答案
import jieba
txt = input("请输入一段中文文本:")
ls = jieba.lcut(txt)
for i in ls[::-1]:
print(i,end="")
// 考生文件初始代码
n = eval(input("请输入正整数:"))
print("{______}".format(n))
// 参考答案
n = eval(input("请输入正整数:"))
print("{0:@>30,}".format(n))
// 考生文件初始代码
a = [11,3,8]
b = eval(input()) #例如:[4,5,2]
______
for i in ______:
s += a[i]*b[i]
print(s)
// 参考答案
a = [11, 3, 8]
b = eval(input())
s = 0
for i in range(3):
s += a[i] * b[i]
print(s)
// 考生文件初始代码
import random
______
for i in range(______):
print(______, end=" ")
// 参考答案
import random
random.seed(255)
for i in range(5):
print(random.randint(1, 50), end=" ")
// 考生文件初始代码
s = eval(input("请输入一个数字:"))
ls = [0]
for i in range(65,91):
ls.append(chr(_____))
print("输出大写字母:{}".format(_____))
// 参考答案
s = eval(input("请输入一个数字:"))
ls = [0]
for i in range(65,91):
ls.append(chr(i))
print("输出大写字母:{}".format(ls[s]))
// 考生文件初始代码
s = input("请输入一个十进制数:")
num = _____
print("转换成二进制数是:{_____}".format(_____))
// 参考答案
s = input("请输入一个十进制数:")
num = int(s)
print("转换成二进制数是:{:b}".format(num))
// 考生文件初始代码
import _____
s = input("请输入一个中文字符串,包含标点符号:")
m =_____
print("中文词语数:{}".format(_____))
// 参考答案
import jieba
s = input("请输入一个中文字符串,包含标点符号:")
m = jieba.lcut(s)
print("中文词语数:{}".format(len(m)))
// 考生文件初始代码
lis = [2,8,3,6,5,3,8]
new_lis = _____
print(new_lis)
// 参考答案
lis = [2,8,3,6,5,3,8]
new_lis = list(set(lis))
print(new_lis)
// 考生文件初始代码
fruit = input('输入水果:')
lis = ['苹果','哈密瓜','橘子','猕猴桃','杨梅','西瓜']
if _____:
_____
else:
_____
// 参考答案
fruit = input('输入水果:')
lis = ['苹果','哈密瓜','橘子','猕猴桃','杨梅','西瓜']
if fruit in lis:
print(fruit + '在列表lis中')
else:
print(fruit + '不在列表lis中')
// 考生文件初始代码
def str_change(str) :
return _____
str = input("输入字符串:")
print(str_change(_____))
// 参考答案
def str_change(str) :
return str[::-1]
str = input("输入字符串:")
print(str_change(str))
// 考生文件初始代码
while _____:
s = input("请输入信息:")
if _____:
break
// 参考答案
while True:
s = input("请输入信息:")
if s == "y" or s == "Y":
break
// 考生文件初始代码
import calendar
year = _____(input("请输入年份:"))
table = _____(year)
print(table)
// 参考答案
import calendar
year = int(input("请输入年份:"))
table = calendar.calendar(year)
print(table)
// 考生文件初始代码
s = input("请输入绕口令:")
print(s._____("兵","将"))
// 参考答案
s = input("请输入绕口令:")
print(s.replace("兵","将"))
// 考生文件夹中的poem.txt
#Title
A Grain of Sand
#William Blake
To see a world in a grain of sand,
And a heaven in a wild flower,
Hold infinity in the palm of your hand,
And eternity in an hour.
// 考生文件初始代码
_____
result = []
for line in _____:
_____
if len(line) != 0 and line[0] != "#":
_____
result._____
for line in result:
print(line)
f.close()
// 参考答案
f = open("poem.txt","r")
result = []
for line in f.readlines():
line = line.strip()
if len(line) != 0 and line[0] != "#":
result.append(line)
result.sort()
for line in result:
print(line)
f.close()
// 考生文件初始代码
a = []
for i in range(8):
a.append([])
for j in range(8):
a[i].append(0)
for i in range(8):
a[i][0] = 1
_____
for i in range(2,8):
for j in range(1,i):
a[i][j] = _____
for i in range(8):
for j in range(i+1):
print("{:3d}".format(a[i][j]),end=" ")
print()
// 参考答案
a = []
for i in range(8):
a.append([])
for j in range(8):
a[i].append(0)
for i in range(8):
a[i][0] = 1
a[i][i] = 1
for i in range(2,8):
for j in range(1,i):
a[i][j] = a[i-1][j-1] + a[i-1][j]
for i in range(8):
for j in range(i+1):
print("{:3d}".format(a[i][j]),end=" ")
print()
// 考生文件初始代码
def proc(strings):
m = 0
lst = []
for i in range(len(strings)):
if len(strings[i]) _____ m:
m = len(strings[i])
for i in range(len(strings)):
if len(strings[i]) _____ m:
lst.append(strings[i])
return _____
strings = ['cad' ,'VB', 'Python', 'MATLAB', 'hello', 'world']
result = proc(strings)
print("the longest words are:")
for item in result:
print("{: >25}".format(item))
// 参考答案
def proc(strings):
m = 0
lst = []
for i in range(len(strings)):
if len(strings[i]) > m:
m = len(strings[i])
for i in range(len(strings)):
if len(strings[i]) == m:
lst.append(strings[i])
return lst
strings = ['cad' ,'VB', 'Python', 'MATLAB', 'hello', 'world']
result = proc(strings)
print("the longest words are:")
for item in result:
print("{: >25}".format(item))
// 考生文件初始代码
n = input('请输入一个正整数:')
for i in range(____________):
print('____________'.format(i, ____________))
// 参考答案
n = input('请输入一个正整数:')
for i in range(1,eval(n)+1):
print('{:0>2} {}'.format(i, '>'*i))
// 考生文件初始代码
ns = input("请输入一串数据:")
dnum,dchr = ____________
for i in ns:
if i.isnumeric():
dnum += ____________
elif i.isalpha():
dchr += ____________
else:
pass
print('数字个数:{},字母个数:{}'.format(____________))
// 参考答案
ns = input("请输入一串数据:")
dnum,dchr = 0,0
for i in ns:
if i.isnumeric():
dnum += 1
elif i.isalpha():
dchr += 1
else:
pass
print('数字个数:{},字母个数:{}'.format(dnum,dchr))
// 考生文件初始代码
std = [['张三',90,87,95],['李四',83,80,87],['王五',73,57,55]]
modl = "亲爱的{}, 你的考试成绩是: 英语{}, 数学{}, Python语言{}, 总成绩{}.特此通知."
for st in std:
cnt = ____________
for i in range(____________):
cnt += ____________
print(modl.format(st[0],st[1],st[2],st[3],cnt))
// 参考答案
std = [['张三',90,87,95],['李四',83,80,87],['王五',73,57,55]]
modl = "亲爱的{}, 你的考试成绩是: 英语{}, 数学{}, Python语言{}, 总成绩{}.特此通知."
for st in std:
cnt = 0
for i in range(1,4):
cnt += st[i]
print(modl.format(st[0],st[1],st[2],st[3],cnt))
// 考生文件初始代码
n = eval(input("请输入正整数:"))
print("{______}".format(n))
// 参考答案
n = eval(input("请输入正整数:"))
print("{:=^14}".format(n))
// 考生文件初始代码
a = [3,6,9]
b = eval(input()) #例如:[1,2,3]
j=1
for i in range(len(__(1)____)):
b._____(2)_____
j+= __(3)______
print(b)
// 参考答案
a = [3,6,9]
b = eval(input()) #例如:[1,2,3]
j=1
for i in range(len(a)):
b.insert(j,a[i])
j+= 2
print(b)
// 考生文件初始代码
import random
____________ # 此处可多行
s = 0 #
____________ # 此处可多行
print(s)
// 参考答案
import random
random.seed(100) # 此处可多行
s = 0 #
for i in range(3):
n = random.randint(1,9) #此处可多行
s += n**3
print(s)
刷题后进行适当的总结对巩固知识点具有十分重要的意义,本部分内容将对包括以上真题(基本操作题)在内的十余套真题进行总结,凝练出一些在考试当中出现频率极高的考点。划重点!!下图为个人总结的编程题考点脑图–基本操作题部分供各位小伙伴学习参考,下篇会继续针对性的补充目前尚未总结到的内容。
该部分总结了在编程题当中遇到了几乎所有输入输出操作的相关函数及其使用方法,建议小伙伴的查看的同时能够自己打开IDLE敲下代码,实际体会一下使用这些函数的具体效果,有助于巩固记忆~
相信只要是学过其他语言的小伙伴对程序控制结构都比较熟悉,掌握起来也相对较简单,因此这边不做过多介绍。另外数据类型是学习Python的重中之重,如果有小伙伴看到这对Python常见的数据类型(字符串、列表、字典等)还不清楚的,需要去自行补充一下相关知识点,可以参考这篇文章学习Python基础(3)—八种数据类型.。
下边两图仅针对小部分在基础编程题中出现的内容进行说明,下篇会针对这两个考点中一些比较常考的特殊知识点进行系统总结与补充~
这部分也是二级当中考频很高的知识点,在选择题和后面的编程题中都会经常涉及,下图仅仅针对部分在基础编程题中出现的内容进行部分总结,后面在下篇当中会根据另外两类型的编程题中的常见考点进一步补充。
由于这部分内容在最后的综合编程题当中出现频率极高,故放在下篇当中再介绍。
总体而言,这两类题目的考试内容也是有迹可循的,这部分的总结将同样会以真题+总结的形式在下篇中逐步更新,敬请期待。下面随便挑了一份真题中的最后三道题目供大家学习参考:
// 考生文件初始代码
import turtle
for i in range(_____):
turtle.seth(_____)
________(100)
// 参考答案
import turtle
for i in range(3):
turtle.seth(i*120)
turtle.fd(100)
// 考生文件初始代码
fo = open("PY202.txt","w")
txt = input("请输入类型序列: ")
...
d = {}
....
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 按照数量排序
for k in ls:
fo.write("{}:{}\n".format(k[0], k[1]))
fo.close()
// 参考答案
fo = open("PY202.txt","w")
txt = input("请输入类型序列: ")
fruits = txt.split(" ")
d = {}
for fruit in fruits:
d[fruit] = d.get(fruit,0) + 1
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 按照数量排序
for k in ls:
fo.write("{}:{}\n".format(k[0], k[1]))
fo.close()
"论语.txt"文件部分示例如下:
【原文】
子曰(1):“学(2)而时习(3)之,不亦说(4)乎?有朋(5)自远方来,不亦乐(6)乎?人不知(7),而不愠(8),不亦君子(9)乎?”
【注释】
(1)子:中国古代对于有地位、有学问的男子的尊称,有时也泛称男子。《论语》书中“子曰”的子,都是指孔子而言。
(2)学:孔子在这里所讲的“学”,主要是指学习西周的礼、乐、诗、书等传统文化典籍。
(3)时习:在周秦时代,“时”字用作副词,意为“在一定的时候”或者“在适当的时候”。但朱熹在《论语集注》一书中把“时”解释为“时常”。“习”,指演习礼、乐;复习诗、书。也含有温习、实习、练习的意思。
(4)说:音yuè,同悦,愉快、高兴的意思。
(5)有朋:一本作“友朋”。旧注说,“同门曰朋”,即同在一位老师门下学习的叫朋,也就是志同道合的人。
(6)乐:与说有所区别。旧注说,悦在内心,乐则见于外。
(7)人不知:此句不完整,没有说出人不知道什么。缺少宾语。一般而言,知,是了解的意思。人不知,是说别人不了解自己。
(8)愠:音yùn,恼怒,怨恨。
(9)君子:《论语》书中的君子,有时指有德者,有时指有位者。此处指孔子理想中具有高尚人格的人。
// 考生文件初始代码 PY301-1
fi = open("论语.txt", ______)
fo = open("论语-原文.txt", ______)
...
for line in fi:
...
fo.write(line.lstrip())
...
// 考生文件初始代码 PY301-2
fi = open("论语-原文.txt", ______)
fo = open("论语-提纯原文.txt", ______)
for line in fi:
...
line=line.replace(______)
...
// 参考答案PY301-1
fi = open("论语.txt", "r")
fo = open("论语-原文.txt", "w")
flag = False
for line in fi:
if "【" in line:
flag = False
if "【原文】" in line:
flag = True
continue
if flag == True:
fo.write(line.lstrip())
fi.close()
fo.close()
// 参考答案PY301-2
fi = open("论语-原文.txt", 'r')
fo = open("论语-提纯原文.txt", 'w')
for line in fi:
for i in range(1,23):
line = line.replace("({})".format(i),"")
fo.write(line)
fi.close()
fo.close()
总体而言,本篇文章初步总结概括了大部分在基础编程题当中出现频率较大的一些重要知识点,并以脑图的形式展现出来。但还有一大部分知识点依旧未涉及到,剩余内容会在下篇针对简单应用题与综合应用题的总结中继续完善,最终的目的是得到一份能够涵盖编程题部分所有考点的知识点总结脑图!!!最后放一张总结至目前为止的知识点总结脑图。
有关于本篇文章的相关问题或者有Python二级题目不理解的小伙伴可以随时评论or私信我,看到后我都会逐一回复哒q(≧▽≦q) PS:今年考完Python二级后才逐渐用Python做毕设、接小项目,目前也还是小白一枚,欢迎各位大佬批评指正!