第1套
使用turtle库的turtle. right()函数和turtle.fd()函数绘制一个菱形,边长为200像素,4个内角度数为2个60度和2个120度
键盘输入一组人员的姓名、性别、年龄等信息,信息间采用空格分隔,每人一行,空行回车结束录入,示例格式如下:
张三 男 23
李四 女 21
王五 男 18
计算并输出这组人员的平均年龄(保留2位小数)和其中男性人数,格式如下:
平均年龄是20.67 男性人数是2
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
data = input() # 姓名 性别 年龄
s=0
n=0
i=0
while data:
i=i+1
ls=data.split()
s=s+int(ls[2])
if ls[1]=='男':
n=n+1
data = input()
s=s/i
print("平均年龄是{:.2f} 男性人数是{}".format(s,n))
第2套
使用turtle库的turtle.fd()函数和turtle. seth()函数绘制一个边长为200的正菱形,菱形4个内角均为90度。
效果如下图所示,箭头与下图严格一致。# 请在______处使用一行代码替换
#
# 注意:请不要修改其他已给出代码
import turtle
turtle.pensize(2)
d = -45
for i in range(4):
turtle.seth(d)
d += 90
turtle.fd(200)
键盘输入某班各个同学就业的行业名称,行业名称之间用空格间隔(回车结束输入)。完善Python代码,统计各行业就业的学生数量,按数量从高到低方式输出。例如输入:
交通 金融 计算机 交通 计算机 计算机
输出参考格式如下,其中冒号为英文冒号:
计算机:3
交通:2
金融:1
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
names=input("请输入各个同学行业名称,行业名称之间用空格间隔(回车结束输入):")
t=names.split()
d = {}
for c in range(len(t)):
d[t[c]]=d.get(t[c],0)+1
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 按照数量排序
for k in range(len(ls)):
zy,num=ls[k]
print("{}:{}".format(zy,num))
第3套
和第2套差不多
第4套
还是画图化等边三角形
第二题,
键盘输入小明学习的课程名称及考分等信息,信息间采用空格分隔,每个课程一行,空行回车结束录入,示例格式如下:
数学 90
语文 95
英语 86
物理 84
生物 87
屏幕输出得分最高的课程及成绩,得分最低的课程及成绩,以及平均分(保留2位小数)。
注意,其中逗号为英文逗号,格式如下:
最高分课程是语文 95,最低分课程是物理 84,平均分是88.40
# 以下代码为提示框架 # 请在...处使用一行或多行代码替换 # 请在______处使用一行代码替换 # # 注意:提示框架代码可以任意修改,以完成程序功能为准 data = input() # 课程名 考分 ls = data.split() min_score=int(ls[1]) min_name = ls[0] max_score=int(ls[1]) max_name = ls[0] n = 0 sum = 0 while data: n+=1 lt = data.split() if min_score > int(lt[1]): min_score = int(lt[1]) min_name = lt[0] if max_score < int(lt[1]): max_score = int(lt[1]) max_name = lt[0] sum+=int(lt[1]) data = input() avg = sum/n print("最高分课程是{} {}, 最低分课程是{} {}, 平均分是{:.2f}".format(max_name,max_score,min_name,min_score,avg))
第5套
使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个边长为100的正八边形
难的题目出现!
加了文件读写
使用字典和列表型变量完成村长选举。某村有40名有选举权和被选举权村民,名单由考生文件夹下文件name.txt给出,从这40名村民中选出一人当长,40人的投票信息由考生文件夹下文件vote.txt给出,每行是一张选票的信息,有效票中得票最多的村民当选。
问题1:请从vote.txt中筛选出无效票写入文件vote1.txt。有效票的含义是:选票中只有一个名字且该名字在name.txt文件列表中,不是有效票的票称为无效票。
问题2:给出当选村长的名字及其得票数。
'''
'''
f=open("name.txt")
names=f.readlines()
f.close()
f=open("vote.txt")
votes=f.readlines()
f.close()
f=open("vote1.txt","w")
D={}
NUM=0
for vote in votes:
num = len(vote.split()) #分解成列表,并求列表长度(元素个数)
if num==1 and vote in names: #仅一个且在姓名中,有效
D[vote[:-1]]=D.get(vote[:-1],0)+1
NUM+=1
else:
f.write(vote)
f.close()
l=list(D.items())
l.sort(key=lambda s:s[1],reverse=True)
name=l[0][0]
score=l[0][1]
print("有效票数为:{} 当选村长村民为:{},票数为:{}".format(NUM,name,score))挖空地方:
第6套
五边形÷的是72
使用字典和列表型变量完成最有人气的明星的投票数据分析。投票信息由考生文件夹下文件vote.txt给出,一行只有一个明星姓名的投票才是有效票。有效票中得票最多的明星当选最有人气的明星。
问题1:请统计有效票张数。在考生文件夹下给出了程序框架文件PY202-1.py,补充代码完成程序(7分)
问题2:请给出当选最有人气明星的姓名和票数,在考生文件夹下给出了程序框架文件PY202-2.py,补充代码完成程序(8分)。
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
f = open("vote.txt")
names = f.readlines()
f.close()
n = 0
for name in names:
num = len(name.split())
if num==1:
n+=1
print("有效票{}张".format(n))# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
f = open("vote.txt")
names = f.readlines()
f.close()
D = {}
for name in names:
if len(name.split())==1:
D[name[:-1]]=D.get(name[:-1],0) + 1
l = list(D.items())
l.sort(key=lambda s:s[1],reverse=True)
name = l[0][0]
score = l[0][1]
print("最具人气明星为:{},票数为:{}".format(name,score))第7套
十二边形,30
计算两个列表ls和lt此对应元素乘积的和(即向量积),补充PY202.py文件。
ls = [111,222,333,444,555,666,777,888,999]
lt = [999,777,555,333,111,888,666,444,222]
第8套
使用turtle库的turtle.fd()函数和turtle.left()函数绘制一个边长为200像素的正方形及一个紧挨四个顶点的圆形
获得用户的非数字输入,如果输入中存在数字,则要求用户重新输入,直至满足条件为止,并输出用户输入字符的个数,
第9套
在考生文件夹下有个文件PY201.py,在横线处填写代码,完成如下功能。根据列表中保存的数据采用turtle库画图直方图,显示输出在屏幕上
#
# 在____________上补充代码
# 请不要修改其他代码
#
import turtle as t #更简洁地调用turtle库
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(5)
for i in range(len(ls)):
t.penup() #提起画笔
t.goto(x0 + (i+1)*50, y0) #移到绝对坐标处,这里x坐标动,y坐标不动
t.seth(90)
t.pendown() #放下画笔
t.fd(ls[i]) #表示直线爬行的距离
t.done()
在已定义好的字典pdict里有一些人名及其电话号码。请用户输入一个人的姓名,在字典中查找该用户的信息,如果找到,生成一个四位数字的验证码,并将名字、电话号码和验证码输出在屏幕上,如示例所示。如果查找不到该用户信息,则显示“对不起,您输入的用户信息不存在。”
#
# 在......上补充一行或多行代码
# 不得修改其他代码
#
import random
random.seed(2)
pdict= {'Alice':['123456789'],
'Bob':['234567891'],
'Lily':['345678912'],
'Jane':['456789123']}
name = input('请输入一个人名:')
if name in pdict:
print("{} {} {}".format(name,pdict.get(name)[0],random.randint(1000,9999)))
else:
print("对不起,您输入的用户信息不存在。")
第10套
利用random库和turtle库,在屏幕上绘制5个圆圈,圆圈的半径和圆心的坐标由randint()函数产生,圆的X和Y坐标范围在[-100,100]之间;半径的大小范围在[20,50]之间,圆圈的颜色随机在color列表里选择。#
# 在____________上补充代码
# 请不要修改其他代码
#
import turtle as t
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()
在考生文件夹下有个文件PY202.py,定义了一个6个浮点数的一维列表lt1和一个包含3个数的一维列表lt2。
示例如下:
lt1=[0.69,0.292,0.33,0.131,0.61,0.254]
lt2=[0.1,0.8,0.2]
在横线处填写代码,完成如下功能。计算lt1列表跟lt2列表的向量内积,两个向量X=[x1,x2,x3]和Y=[y1,y2,y3]的内积计算公式如下:
k=x1*y1+x2*y2+x3*y3
将每次计算的两组对应元素的值、以及对应元素乘积的累计和(k)的值显示在屏幕上格式如下所示。
k=0.069,lt2[0]=0.100,lt1[0+0]=0.690
k=0.303,lt2[1]=0.800,lt1[0+1]=0.292
k=0.369,It2[2]=0.200,lt1[0+2]=0.330
... (略)
第11套(dif)
(做对了,要注意那个backward)利用random库和turtle库,在屏幕上绘制4个小雪花,雪花的中心点坐标由列表points给出,雪花的半径长度由randint()函数产生。
雪花的颜色是红色,效果如下图所示

# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
import turtle as t
import random as r
r.seed(1)
t.pensize(2)
t.pencolor('red') #设置笔的颜色
angles = 6
points= [[0,0],[50,40],[70,80],[-40,30]]
for i in range(len(points)):
x0,y0 = points[i]
t.penup() #提起画笔,与pendown配对使用
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()
(!!做错了,不是很懂怎么把大学都保存进去)
l=line.strip().split(',')
if len(l)<3:
continue
dic[l[-1]]=dic.get(l[-1],[])+[l[1]]和最后输出注意一下print('{:>4}: {:>4} : {}'.format(d[0],len(d[1]),' '.join(d[1])))
data. txt,其中记录了2019年QS全球大学排名前20名的学校信息,示例如下:
1,麻省理工学院,美国
2,斯坦福大学,美国
3,哈佛大学,美国
第一列为排名,第2列为学校名称,第3列为学校所属的国家,字段之间用逗号’,'隔开
程序读取data.txt文件内容,统计出现的国家个数以及每个国家上榜大学的数量及名称,输出结果格式示例如下:
美国: 11 : 麻省理工学院 斯坦福大学 哈佛大学 加州理工学院 芝加哥大学 普林斯顿大学 康奈尔大学 耶鲁大学 哥伦比亚大学 宾夕法尼亚大学 密歇根大学安娜堡分校
英国: 5 : 牛津大学 剑桥大学 帝国理工学院 伦敦大学学院 爱丁堡大学
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
f = open('data.txt','r',encoding='utf-8')
dic={}
for line in f:
l=line.strip().split(',')
if len(l)<3:
continue
dic[l[-1]]=dic.get(l[-1],[])+[l[1]]
unis=list(dic.items())
unis.sort(key=lambda x:len(x[1]),reverse=True)
for d in unis:
print('{:>4}: {:>4} : {}'.format(d[0],len(d[1]),' '.join(d[1])))第12套
利用random库和turtle库,在屏幕上绘制3个黑色的正方形,正方形的左下角点坐标和正方形边长由randint函数产生,参数在代码中给出。

# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
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.pendown()
for j in range(4):
t.forward(length)
t.setheading(90*(j+1))
t.done()
out.txt,其中有一些数据库操作功能的执行时间信息,如下所示:
示例
starting,0.000037,2.102
After opening tables,0.000008,0.455
System lock,0.000004,0.227
其中第1列是操作的名字,第2列是操作所花费的时间,单位是秒,第3列是操作时间占全部过程的百分比,字段之间用逗号','隔开。
读取out.txt文件里的内容,统计所有操作所花费的时间总和,并输出操作时间百分比最多的三个操作所占百分比的值,及其对应的操作名称,显示在屏幕上, 如下所示: .
示例
the total execute time is 0.001724
the top 0 percentage time is 46.023, spent in "Filling schema table" operation
the top 1 percentage time is 36.932, spent in "Sending data" operation

# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
sumtime = 0
percls = []
ts = {}
with open('out.txt', 'r') as f:
for i in f:
i=i.strip().split(',')
ts[i[0]]=i[2]
sumtime+=eval(i[1])
print('the total execute time is ', sumtime)
tns = list(ts.items())
tns.sort(key=lambda x: x[1], reverse=True)
for i in range(3):
print('the top {} percentage time is {}, spent in "{}" operation'.format(i, tns[i][1],tns[i][0]))第13套(做对了,注意第一题pendown的拼写,还有函数有个负号-rs[i]作为开始化的坐标,第二题先做的是在循环中输出和计算中文数,然后再循环一次输出没符号的,可以print("")换行)
使用 turtle 库绘制三个彩色的圆,圆的颜色按顺序从颜色列表 color 中获取,圆的圆心位于(0,0)坐标处,半径从里至外分别是 10 像素,30 像素,60 像素。

用户输入一首诗的文本,包含中文逗号和句号。
用 jieba 库的精确模式对输入文本分词。
1.将分词后的词语输出并以"/ "分隔并统计中文词语数并输出
2.以逗号和句号将输入文本分隔成单句并输出,每句一行, 每行 20 个字符宽,居中对齐。
在 1 和 2 的输出之间,增加一个空行。
示例输入:
床前明月光,疑是地上霜。
输出:
床前/明月光/疑是/地上/霜/
中文词语数是:5
床前明月光
疑是地上霜
#
# 在……上补充一行或多行代码
#
import jieba
s = input("请输入一段中文文本,句子之间以逗号或句号分隔:")
slist=jieba.lcut(s)
m=0
for i in slist:
if i in ",。":
continue
print(i,end="/")
m=m+1
print("\n中文词语数是:{}\n".format(m))
for i in s:
if i in ",。":
print()
else:
print(i,end="")第14套
请编写代码替换横线,不修改其他代码,实现以下功能:
使用turtle库函数绘制4个等距排列的正方形,边长为40像素,间距宽度为40。最左边的正方形左上角坐标为(0,0)。

:(1)定义一个列表persons,里面有一些名字字符串;
(2)在该列表中查找用户输入的一个名字字符串;如果找到,则生成一个四位数字的随机数组成的验证码,输出找到的名字字符串和验证码;如果找不到该字符串,则输出提示信息“对不起,您输入的名字不存在。”;如果用户输入一个字母'q',则退出程序;
(3)显示提示信息后,再次显示“请输入一个名字:”,提示用户输入,重复执行步骤2;执行3次后自动退出程序。
输入输出示例
输入
Alice
输出
Alice 1001
输入
bob
输出
对不起,您输入的名字不存在。
输入
q
输出
程序自动退出
#
# 在……上补充一行或多行代码,不得修改其他代码
#
import random as r
r.seed(0)
persons = ['Alice', 'Bob','lala', 'baicai']
flag = 3
while flag>0:
flag -= 1
s=input("请输入一个名字:")
if s=='q':
flag=0
print("程序自动退出")
break
if s in persons:
name=s
num=r.randint(1000,9999)
print('{} {}'.format(name, num))
else:
print('对不起,您输入的名字不存在。')第15套
(1)使用turtle库和random库,在屏幕上绘制5个彩色的圆;
(2)圆的颜色随机从颜色列表color中获取;
(3)圆的起始坐标x和y值从范围[-100,100]之间选取,半径从范围[10,30]之间选取。
效果如下图所示。
import turtle as t
import random as r
color = ['red','green','blue','purple','black']
r.seed(1)
for j in range(5):
t.pencolor(color[r.randint(0,4)])
t.penup()
t.goto(r.randint(-100,100),r.randint(-100,100))
t.pendown()
t.circle(r.randint(10,30))
t.done()
(1)获取用户输入的一段文本,包含但不限于中文字符、中文标点符号及其他字符﹔
(2)用jieba的精确模式分词,统计分词后中文词语词频,具体为:将字符长度大于等于2的词语及其词频写入文件data2.txt,每行一个词语,词语和词频之间用冒号分隔。
示例如下:
输入:
借助平台优势,宣传推广相应产品,并为技术从业者提供更多学习、交流、探讨的机会,从而促进技术交流、企业互通、人才培养,促进技术的发展。
输出:
借助:1
平台:1
优势:1
宣传:1
推广:1
相应:1
产品:1
技术:3
从业者:1
#
# 在……上补充一行或多行代码
#
import jieba
f = open('data2.txt','w')
s = input("请输入一个中文字符串,包含逗号和句号:")
k=jieba.lcut(s)
d1 = {}
for i in k:
if len(i) >= 2:
d1[i] = d1.get(i,0) + 1
for j in d1:
f.write(j+':'+str(d1[j])+'\n')
f.close()一直不对
第16套
做对了,又做对了,一定要记得1,5
使用turtle库和random库,绘制四个彩色的正方形,正方形颜色随机从颜色列表color中获取;正方形边长从范围[50,200]之间选取,每个正方形左下角坐标x和y从范围[-100,100]之间选取。
# 在____________上补充代码 (12根短线)
#
import turtle as t
import random as r
color = ['red','blue','purple','black']
r.seed(1)
for j in range(4):
t.pencolor(color[r.randint(0,3)])
t.penup()
t.goto(r.randint(-100,100), r.randint(-100,100))
t.pendown()
ra = r.randint(50, 200)
for i in range(1,5):
t.fd(ra)
t.seth(90*i)
t.done()
(做对了,但是可以考虑一下用它这个方法replace)文件PY202.py里定义了一个字符串dela='-;:,.()"<>',包含了需要去除的字符。获取用户输入的文本,去除字符串dela中的字符,用jieba精准分词后,统计并输出其中词语的个数。
示例如下:
输入:
请参考“论语-原文-输出示例.txt"文件
输出:
里面有8个词语。
此外,模板程序还将输出其他一些调试信息,请保留并按照提示给出相应输出,作为调试辅助。import jieba
dela = '-;:,.()"<>'
s = input("请输入一句话:")
print("\n这句话是:{}".format(s))
for i in dela:
s=s.replace(i,'')
word=jieba.lcut(s)
print("替换之后是:{}".format(s))
print("里面有 {}个词语。".format(len(word)))































