计算机二级python真题
一、简单应用题——写入字符串
从键盘输入一些字符,逐个把它们写到指定的文件 out.txt 中,直到输入一个@为止。
示例1:
输入:"
Python
is
open.@
"
输出: “Python is open.”(执行代码后, out.txt文件中内容)
示例2:
输入:“python@123”
输出: “python” (执行代码后, out.txt文件中内容)
代码:
fi = open("out.txt","w",encoding="utf-8")
ch = input("请输入字符串:\n")
while ch != '@':
if '@' in ch:
t = ch.find("@")
fi.write(ch[0:t])
break
else:
fi.write(ch + " ")
ch = input("请输入字符串:\n")
fi.close()
二、综合应用题
参照编程模板完善代码,实现下述功能,可以修改其它代码,将代码保存为P301.py提交系统。
在数据文件 lizhi.txt 里有一堆励志短语,每句一行。示例如下:
1.努力的最大意义,是让自己随时有能力跳出自己厌恶的圈子。
2.埋怨只是一种懦弱的表现;努力,才是人生的态度。不安于现状,不甘于平庸,就可能在勇于进取的奋斗中奏响人生壮美的乐章。
3.最好的时光,在路上;最好的生活,在别处。独自上路去看看这个世界,你终将与最好的自己相遇。
用 jieba 分词库的 Icut) 函数分词,统计分词后的长度大于等于 2 的词组的出现次数,按照出现次数排序,在屏幕上显示出现次数最多的 10 个词
。
在画布上,用 tutle 的 circle 画填充为红色的圆圈,圆圈的半径为出现次数 n*4,最大的圆圈的起点在画布的坐标 (-300,0),其余的圆按顺序沿着 × 轴向右边相邻,连续扩展。
画出来的图示例效果如下:
示例1:
输入:无
输出:”
自己 16
为了 7
曾经 7
努力 6
人生 5
代码:
import jieba #导入中文分词库jieba
import turtle as t #导入turtle库,并给turtle去一个别名t
def drawCircle(x,y,radius,color,name): #自定义函数drawCircle,包含了5个参数
t.pencolor(color) #设置绘圆的颜色,color是一个必选参数,调用函数时可以设置为'red'、'blue'...
t.penup() #绘图笔提前起来,表示不落下去绘图,
t.goto(x, y) #将笔的坐标定位到(x,y),x,y都是必选参数
t.write(name, font=('Arial', 10, 'normal')) #在当前的(x,y),写上name内容,文字属性由font决定。name是必选参数
t.seth(-90) #将绘图方向设置为-90度方向
t.pendown() #绘图笔放下,表示落下去绘图,有颜色啦:)
t.circle(radius) #按半径为radius绘制圆形
return t.pos() #返回t.pos()当前的位置,例如:(-300.00,0.00)
dws = {} #定义一个字典,注意不是集合哦
with open('lizhi.txt', 'r',encoding="utf-8") as f: #用with语句以只读方式打开lizhi.txt文件
for lines in f.readlines(): #遍历列表f.readlines()中的每一个元素
wordlist = jieba.lcut(lines.strip('\n')) #去掉行字符串最后的"\n"不可显示换行符,
#使用jieba.lcut(str)函数进行中文分词,返回一个列表
for word in wordlist:
if len(word) >= 2: #统计词语长度>=2 的词语出现频次
dws[word] = dws.get(word,0) + 1 #逐步构建字典dws,词语:次数的键值对
#如果w在dws的keys中,则键值+1,如果w不在dws的keys中,则构建健值对dws[w] = 0 + 1
lt = list(dws.items()) #将dws.items()转换为列表并赋值给lt,形如[("abc",10),("edf","12"),...],目前是无序的
lt.sort(key = lambda x:x[1], reverse= True) #对dls进行排序,按列表元素中索引为1,这行代码考试时会给出。但一定要理解。
x,y = -300,0 #设置初始坐标位置
for i in range(10): #根据统计结果绘制图形
print(lt[i][0],lt[i][1]) #输出结果
x,y = drawCircle(x,y,lt[i][1]*4 ,'red',lt[i][0]+str(lt[i][1])) #调用绘图函数实现绘图
x += lt[i][1] * 8 #改变x初始位置,y值不变
t.done()