首页 > Python基础教程 >
-
Python 计算机二级模拟题赏析(2)
d ={"大海":"蓝色", "天空":"灰色", "大地":"黑色"}
print(d["大地"], d.get("大地", "黄色"))
A 黑的 灰色
B 黑色 黑色
C 黑色 蓝色
D 黑色 黄色
正确答案: B
\37. 当用户输入abc时,下面代码的输出结果是
try:
n = 0
n = input("请输入一个整数: ")
def pow10(n):
return n**10
except:
print("程序执行错误")
A 输出:abc
B 程序没有任何输出
C 输出:0
D 输出:程序执行错误
正确答案: B
请仔细看代码,def定义后的函数并没有执行,仅仅是干扰
38.下面代码的输出结果是
a = [[1,2,3],[4,5,6], [7,8,9]]
s = 0
for c in a:
for j in range(3):
s += c[j]
print(s)
A 0
B 45
C 以上答案都不对
D 24
正确答案: B
39.文件 book.txt 在当前程序所在目录内,其内容是一段文本:book,下面代码的输出结果是
txt =open("book.txt", "r")
print(txt)
txt.close()
A book.txt
B txt
C 以上答案都不对
D book
正确答案: C
打印文本文件对象的时候绝对不是这样的,而是类似于
<_io.TextIOWrapper name='book.txt'mode='r' encoding='utf-8'>
40.如果当前时间是 2018年5月1日10点10分9秒,则下面代码的输出结果是
import time
print(time.strftime("%Y=%m-%d@%H>%M>%S",time.gmtime()))
A 2018=05-01@10>10>09
B 2018=5-1 10>10>9
C True@True
D 2018=5-1@10>10>9
正确答案: A
关于time.strftime和time.gmtime的用法请看文档。不会的看到Y,m,d之类的都基本上猜到是年月日啥的了
1.仅使用 Python 基本语法,即不使用任何模块,编写 Python 程序计算下列数学表达式的结果并输出,小数点后保留3位。

答案:
x=pow((3**4+5*6**7)/8),0.5)
print(round(x,3))
一看不能调用任何模块想必大家怕是慌了,但要记得高中数学老师讲过x的0.5次方就是sqrt(x)嘛
2.以中国共产党第十九次全国代表大会报告中一句话作为字符串变量 s,完善 Python 程序,分别用 Python 内置函数及 jieba 库中已有函数计算字符串 s 的中文字符个数及中文词语个数。注意,中文字符包含中文标点符号。(提交的代码应包括题目中给出的部分)
import jieba
s = "中国特色社会主义进入新时代,我国社会主要矛盾已经转化为人民日益增长的美好生活需要和不平衡不充分的发展之间的矛盾。"
n = ____①____
m = ____②____
print("中文字符数为{},中文词语数为{}。".format(n,m))
答案
1:len(s)
2:jieba.lcut(s)
题目要求求中文字符,有个问题就是不知道包不包括中文逗号句号,如果不包括的话就len(re.findall(‘[一-鿿]’,s)),但是只能在要求的地方写,而且不能导入re库
3.0x4DC0 是一个十六进制数,它对应的 Unicode 编码是中国古老的《易经》六十四卦的第一卦,请输出第 51 卦(震卦)对应的 Unicode 编码的二进制、十进制、八进制和十六进制格式。
print("二进制{____①____}、十进制{____②____}、八进制{____③____}、十六进制{____④____}".format(____⑤____))
答案:
print("二进制{0:b}、十进制{0}、八进制{0:o}、十六进制{0:x}".format(0x4DC0+50))
看到题目的format想必大家一下子慌了,我也是,格式化字符串我都是懂%格式的,但查阅资料还是懂了,那为嘛不能填bin,oct,和hex呢。当然可以了,和答案运行一致也行
4.使用 turtle 库的 turtle.fd() 函数和 turtle.seth() 函数绘制一个边长为 200 的正方形,效果如下图所示。请结合格式框架,补充横线处代码。

import turtle
d = 0
for i in range(____①____):
turtle.fd(____②____)
d = ____③____
turtle.seth(d)
答案: fd就是forward,seth就是setheading,turtle的函数要明白,如果学了turtle的同学可能认为这个过于简单了,没错,我也这样认为。
import turtle
d = 0
for i inrange(4):
turtle.fd(200)
d = d + 90
turtle.seth(d)
5.列表 ls 中存储了我国 39 所 985 高校所对应的学校类型,请以这个列表为数据变量,完善 Python 代码,统计输出各类型的数量。
ls = ["综合", "理工", "综合", "综合", "综合", "综合", "综合", "综合", "综合", "综合",
"师范", "理工", "综合", "理工", "综合", "综合", "综合", "综合", "综合","理工",
"理工", "理工", "理工", "师范", "综合", "农林", "理工", "综合", "理工", "理工",
"理工", "综合", "理工", "综合", "综合", "理工", "农林", "民族", "军事"]
答案:
类似于词频统计的算法
ls = ["综合", "理工", "综合", "综合", "综合", "综合", "综合", "综合",
"综合", "综合", "师范", "理工", "综合", "理工", "综合", "综合",
"综合", "综合", "综合", "理工", "理工", "理工", "理工", "师范",
"综合", "农林", "理工", "综合", "理工", "理工", "理工", "综合",
"理工", "综合", "综合", "理工", "农林", "民族", "军事"]
d = {}
for word in ls:
d[word] = d.get(word, 0) + 1
for k in d:
print("{}:{}".format(k, d[k]))
6.《论语》是儒家学派的经典著作之一,主要记录了孔子及其弟子的言行。网络上有很多《论语》文本版本。这里给出了一个版本,文件名称为“论语-网络版.txt”,其内容采用如下格式组织:
【原文】
1.11子曰:“父在,观其(1)志;父没,观其行(2);三年(3)无改于父之道(4),可谓孝矣。”
【注释】
(略)
【译文】
(略)
【评析】
(略)
该版本通过【原文】标记《论语》原文内容,采用【注释】、【译文】和【评析】标记对原文的注释、译文和评析。
问题1:请编写程序,提取《论语》文档中所有原文内容,输出保存到“论语-提取版.txt”文件。输出文件格式要求:去掉文章中原文部分每行行首空格及如“1.11”等的数字标志,行尾无空格、无空行。参考格式如下(原文中括号及内部数字是对应源文件中注释项的标记):
子曰(1):“学(2)而时习(3)之,不亦说(4)乎?有朋(5)自远方来,不亦乐(6)乎?人不知(7),而不愠(8),不亦君子(9)乎?”
有子(1)曰:“其为人也孝弟(2),而好犯上者(3),鲜(4)矣;不好犯上,而好作乱者,未之有也(5)。君子务本(6),本立而道生(7)。孝弟也者,其为人之本与(8)?”
子曰:“巧言令色(1),鲜(2)仁矣。”
(略)
问题2:请编写程序,在“论语-提取版.txt”基础上,进一步去掉每行文字中所有括号及其内部数字,保存为“论文-原文.txt”文件。参考格式如下:
子曰:“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知,而不愠,不亦君子乎?”
有子曰:“其为人也孝弟,而好犯上者,鲜矣;不好犯上,而好作乱者,未之有也。君子务本,本立而道生。孝弟也者,其为人之本与?”
子曰:巧言令色,鲜仁矣。”
参考答案:
不就是正则表达式处理这样的文本嘛,首先分析文本结构,原文开头就是【原文】,结束是【,然后去掉1.11和多余的空行啊,空格啊之类的,第二个就是去掉(1)这样的注释就行,代码如下
import re
with open('论语-网络版.txt','r',encoding='utf-8') as f:
b=f.read()
yuanwen=re.findall('(?<=【原文】)[sS]+?(?=【)',b)
yw=[]
fori in yuanwen:
t=re.sub('s','',i)
t=re.sub('d{1,2}·d{1,2}','',t)
yw.append(t)
tiqu='
'.join(yw)
withopen('论语-提取版.txt','w',encoding='utf-8') as f:
f.write(tiqu)
#第2小题
yuanw=re.sub('(d{1,2})','',tiqu)
with open('论语-原文.txt','w',encoding='utf-8')as f:
f.write(yuanw)
结果一看参考答案,高,实在是高!参考答案没有导入re库,全靠一行一行读,和使用format,有兴趣的同学们可以试一试
参考代码 1
fi= open("论语-网络版.txt", "r", encoding="utf-8")
fo= open("论语-提取版.txt", "w")
wflag= False #写标记
forline in fi:
if "【" in line: #遇到【时,说明已经到了新的区域,写标记置否
wflag = False
if "【原文】" in line: #遇到【原文】时,设置写标记为True
wflag = True
continue
if wflag == True: #根据写标记将当前行内容写入新的文件
for i in range(0,25):
for j in range(0,25):
line =line.replace("{}•{}".format(i,j),"**")
for i in range(0,10):
line =line.replace("*{}".format(i),"")
for i in range(0,10):
line =line.replace("{}*".format(i),"")
line = line.replace("*","")
fo.write(line)
fi.close()
fo.close()
参考代码 2
fi= open("论语-提取版.txt", "r")
fo= open("论语-原文.txt", "w")for line in fi: #逐行遍历
for i in range(1,23): #对产生1到22数字
line=line.replace("({})".format(i), "") #构造(i)并替换
fo.write(line)
fi.close()
fo.close()
转自:Python 计算机二级模拟题赏析