还有10天左右python二级考试,临考刷题,分享一些心得
一共有三类大题
1.三个基本题
random库详解
seed(a=None) 初始化随机数种子,默认值为当前系统时间
random() 生成一个[0.0, 1.0)之间的随机小数
randint(a, b) 生成一个[a,b]之间的整数
getrandbits(k) 生成一个k比特长度的随机整数
randrange(start, stop[, step]) 生成一个[start, stop)之间以step为步数的随机整数
uniform(a, b) 生成一个[a, b]之间的随机小数
choice(seq) 从序列类型(例如:列表)中随机返回一个元素
shuffle(seq) 将序列类型中元素随机排列,返回打乱后的序列
sample(pop, k) 从pop类型中随机选取k个元素,以列表类型
format概述
{<参数序号>: <格式控制标记>}
格式控制标记包括:<填充><对齐><宽度>,<.精度><类型>6个字段,这些字段都是可选的,可以组合
## <填充>、<对齐>和<宽度>主要用于对显示格式的规范。
宽度指当前槽的设定输出字符宽度,如果该槽参数实际值比宽度设定值大,则使用参数实际长度。如果该值的
实际位数小于指定宽度,则按照对齐指定方式在宽度内对齐,默认以空格字符补充。
对齐字段分别使用<、>和^三个符号表示左对齐、右对齐和居中对齐。
填充字段可以修改默认填充字符,填充字符只能有一个。
## <.精度><类型>主要用于对数值本身的规范
<.精度>由小数点(.)开头。对于浮点数,精度表示小数部分输出的有效位数。
对于字符串,精度表示输出的最大长度。小数点可以理解为对数值的有效截断。
## <类型>表示输出整数和浮点数类型的格式规则。
n 对于整数类型,输出格式包括6种:
b: 输出整数的二进制方式;
c: 输出整数对应的Unicode字符;
d: 输出整数的十进制方式;
o: 输出整数的八进制方式;
x: 输出整数的小写十六进制方式;
X: 输出整数的大写十六进制方式;
## 对于浮点数类型,输出格式包括4种:
e: 输出浮点数对应的小写字母e的指数形式;
E: 输出浮点数对应的大写字母E的指数形式;
f: 输出浮点数的标准浮点形式;
%: 输出浮点数的百分形式。
jieba库概述
jieba.lcut(s)是最常用的中文分词函数,用于精准模式,即将字符分割成等量的中文词组,返回结果是列表类型。
jieba.add_word()函数,顾名思义,用来向jieba词库增加新的单词
注意细节,不算太难
没啥好说的
2.一个画图题
turtle库详解
## 窗体函数
turtle.setup(width, height, startx, starty)
作用:设置主窗体的大小和位置
参数:
width :窗口宽度,如果值是整数,表示的像素值;如果值
是小数,表示窗口宽度与屏幕的比例;
height: 窗口高度,如果值是整数,表示的像素值;如果
值是小数,表示窗口高度与屏幕的比例;
startx:窗口左侧与屏幕左侧的像素距离,如果值是None
,窗口位于屏幕水平中央;
starty:窗口顶部与屏幕顶部的像素距离,如果值是None
,窗口位于屏幕垂直中央;
## 画笔状态函数
pendown() 放下画笔
penup() 提起画笔,与pendown()配对使用
pensize(width) 设置画笔线条的粗细为指定大小
pencolor() 设置画笔的颜色
begin_fill() 填充图形前,调用该方法
end_fill() 填充图形结束
filling() 返回填充的状态,True为填充,False为未填
clear() 清空当前窗口,但不改变当前画笔的位置
reset() 清空当前窗口,并重置位置等状态为默认值
screensize() 设置画布的长和宽
hideturtle() 隐藏画笔的turtle形状
showturtle() 显示画笔的turtle形状i
svisible() 如果turtle可见,则返回Tr
## 画笔运动函数
forward() 沿着当前方向前进指定距离
backward() 沿着当前相反方向后退指定距离
right(angle) 向右旋转angle角度
left(angle) 向左旋转angle角度
goto(x,y) 移动到绝对坐标(x,y)处
setx( ) 将当前x轴移动到指定位置
sety( ) 将当前y轴移动到指定位置
setheading(angle 设置当前朝向为angle角度
home() 设置当前画笔位置为原点,朝向东。
circle(radius,e) 绘制一个指定半径r和角度e的圆或弧形
dot(r,color) 绘制一个指定半径r和颜色color的圆点
undo() 撤销画笔最后一步动作
speed() 设置画笔的绘制速,参数为0-10
刷完历年经典13个题,对几个函数稍加理解,就不会有什么问题,简单题,13个题的代码放在下面,统一复习
常用的也就那几个函数,套路比较固定,注意区分相对角度和绝对角度
# import turtle
# turtle.pensize(2) #设置画笔的宽度
# for i in range(4):
# turtle.fd(200) #指沿着海龟的前方向运行
# turtle.left(90) #逆时针改变角度,相对角度
# turtle.left(-45)
# turtle.circle(100*pow(2,0.5))
# turtle.pensize(2)
# d = 0
# for i in range(1, 6):
# turtle.fd(100) #指沿着海龟的前方向运行
# d += 72
# turtle.seth(d) #只改变海龟的行进方向(角度按逆时针),绝对角度
# turtle.right(-30)
# turtle.fd(200)
# turtle.right(60)
# turtle.fd(200)
# turtle.right(-240)
# turtle.fd(200)
# turtle.right(60)
# turtle.fd(200) #指沿着海龟的前方向运行
# turtle.right(120) #顺时针改变角度,相对角度
# turtle.pensize(2)
# d = 315
# for i in range(4):
# turtle.seth(d)
# d += 90
# turtle.fd(200)
# for i in range(4):
# turtle.fd(100)
# turtle.fd(-100)
# turtle.seth((i+1)*90)
# for i in range(3):
# turtle.seth(i*120)
# turtle.fd(200)
# turtle.pensize(2)
# d = 0
# for i in range(1, 9):
# turtle.fd(100)
# d += 360/8
# turtle.seth(d)
# turtle.pensize(2)
# d=0
# for i in range(1, 13):
# turtle.fd(40)
# d += 30
# turtle.seth(d)
# import turtle as t
# ls = [69, 292, 33, 131, 61, 254]
# X_len = 400
# Y_len = 300
# x0 = -200
# y0 = -100
#
# t.penup()
# t.goto(x0, y0)
# t.pendown()
#
# t.fd(X_len)
# t.fd(-X_len)
# t.seth(90)
# t.fd(Y_len)
#
# t.pencolor('red')
# t.pensize(20)
# for i in range(len(ls)):
# t.penup()
# t.goto(x0 + (i+1)*50, y0)
# t.seth(90)
# t.pendown()
# t.fd(ls[i])
# t.done()
# import random as r
# color = ['red','orange','blue','green','purple']
# r.seed(1)
# for i in range(5):
# rad = r.randint(20,50)
# x0 = r.randint(-100,100)
# y0 = r.randint(-100,100)
# t.color(r.choice(color))
# t.penup()
# t.goto(x0,y0)
# t.pendown()
# t.circle(rad)
# t.done()
# import turtle as t
# import random as r
#
# r.seed(1)
# t.pensize(2)
# t.color('red')
# angles = 6
# points= [[0,0],[50,40],[70,80],[-40,30]]
#
# for i in range(4):
# x0,y0 = points[i]
# t.penup()
# t.goto(x0,y0)
# t.pendown()
#
# length = r.randint(6, 16)
# for j in range(angles):
# t.forward(length)
# t.backward(length)
# t.right(360 / angles)
# t.done()
# import turtle as t
# import random as r
# r.seed(1)
# t.pensize(2)
# for i in range(3):
# length = r.randint(20,80)
# x0 = r.randint(-100, 100)
# y0 = r.randint(-100, 100)
#
# t.penup()
# t.goto(x0,y0)
# t.down()
# for j in range(4):
# t.fd(length)
# t.seth(90*(j+1))
# t.done()
# from turtle import *
#
# color = ['red', 'green', 'blue']
# rs = [10, 30, 60]
#
# for i in range(3):
# penup()
# goto(0,-rs[i])
# pendown()
# pencolor(color[i])
# circle(rs[i])
# done()
3.两个应用题
第一个题都是统计票数的
大概流程
## 1.获取数据
①打开本地文件f = open("name.txt", encoding="utf-8")
open中的encoding="utf-8" 一定要写,一定要写,一定要写
②获取键盘输入txt = input("请输入:")
## 2.转化成列表
open来的数据一般使用f.readlines()转化成列表
input输入的一般是split()
## 3.循环计数
d[key]=d.get(key,0)+1
使用字典计数关键语句
open来的数据一般是d[key[:-1]]=d.get(key[:-1],0)+1
[:-1]这是为了去除末尾空格或换行
## 4.字典转列表
l = list(d.items())
通用格式
## 5.列表排序
ls.sort(key=lambda x:x[1], reverse=True)
通用格式
reverse=True表示降序,默认为升序False
x:x[1]表示对x以x[1]为依据进行排序
## 6.输出
输出就输出,,,
准备整两个例题分析一下,就刷了(历年1和2两题)往后面一看,好像都不难,后面遇到有意思的题再补,或者你们有想看的题,评论区告诉我
最后一个大题
一般分为好几问
下面是常用操作
## 写入文件
f = open("name.txt", "w", encoding="utf-8")
f.write(string)
f.close()
## 字符串替换
txt = txt.replace(ch, "")
## 字符串分隔
list=txt.split()
## 字符串移除
line.strip()
## jieba分词
import jieba
wordList=jieba.lcut(txt)
## 字符拼接
'str'.join(wordList)
例题后面补
评论区写你想看的题
例题一 03论语1
## 题目要求
在模板中修改代码,提取“论语.txt”文件中的原文内容,输出保存到考
生文件夹下,文件名为“论语-原文.txt”。具体要求:仅保留“论
语.txt”文件中所有【原文】标签下面的内容,不保留标签,并去掉每行
行首空格及行尾空格,无空行。原文小括号及内部数字是源文件中注释项
的标记,请保留。示例输出文件格式请参考“论语-原文-输出示例.txt”
文件。
## 人话
去除空行、原文标签和注释标签以及注释内容,
只保留正文(正文前面的空格去除,每行一句)。
看一下原文件
## 来自群友林夕的代码
fi = open("论语.txt", "r",encoding="utf-8") 读文件
fo = open("论语-原文.txt","w",encoding="utf-8") 写文件
isYuan=False 控制写入标记
yuanStr="" 空白字符串
for line in fi: 遍历文件
line = line.strip() 去除空行、去除行首行尾空格
if line: 确认非空
if "【原文】" in line: 遇到原文标记(原文本也是先原文后注释的)
isYuan=True 控制写入标记打开
continue 跳过这一行(去除原文标记)
if "【注释】"in line: 遇到注释标记
isYuan=False 控制写入标记关闭(去除注释标记和注释正文)
if isYuan: 判断控制写入标记
yuanStr+=line+"\n" 将原文正文暂时保存并换行(如果文件特别大,这样写不好,直接写入文件比较好)
fo.write(yuanStr) 写入文件
fi.close() 关闭文件
fo.close() 关闭文件
小结
原文格式不规范,有一行注释标记与注释文本在一起,导致一直不能通过评测
if line=="【原文】":
将判断if的标记都写为if s in str: 即可