# 请在...处使用一行或多行代码替换# 请在______处使用一行代码替换# 注意:提示框架代码可以任意修改,以完成程序功能为准
txt = input("请输入类型序列:")
tem = txt.split()
d = {}
for i inrange(len(tem)):
d[tem[i]] = d.get(tem[i], 0) + 1
ls = list(d.items())
ls.sort(key=lambda x: x[1], reverse=True) # 按照数量排序for k in ls:
print("{}:{}".format(k[0], k[1]))
二、课程成绩分析
循环读取课程名和分数,遇空行结束,统计最高、最低和平均分。分数字符串记得转整数。
# 请在...处使用一行或多行代码替换# 请在______处使用一行代码替换
data = input() # 课程名 考分
d = {}
while data:
t = data.split()
d[t[0]] = t[1]
data = input()
ls = list(d.items())
ls.sort(key= x: x[], reverse=)
max_course, max_grade = ls[]
min_course, min_grade = ls[(ls)-]
average_grade =
i d.values():
average_grade = average_grade + (i)
average_grade = average_grade / (ls)
(.(max_course, max_grade, min_course, min_grade, average_grade))
lambda
1
True
0
len
1
0
for
in
int
len
print
"最高分课程是{} {}, 最低分课程是{} {}, 平均分是{:.2f}"
format
三、Turtle绘制三角形
直接设置朝向角度,每次前进即可。
# 请在______处使用一行代码或表达式替换# 注意:请不要修改其他已给出代码import turtle as t
for i inrange(3):
t.seth(i * 120)
t.fd(200)
四、Turtle绘制正方形
进100退100再转向,这种画法倒是很少见,不过题目框架如此。
# 请在______处使用一行代码或表达式替换# 注意:请不要修改其他已给出代码import turtle
for i inrange(4):
turtle.fd(100)
turtle.backward(100)
turtle.seth((i + 1) * 90)
五、Turtle绘制正八边形
外角45°,循环8次。
# 请在______处使用一行代码或表达式替换# 注意:请不要修改其他已给出代码import turtle
turtle.pensize(2)
d = 0for i inrange(1, 9):
turtle.fd(100)
d += 360 / 8
turtle.seth(d)
六、投票统计与文件处理
读取选民和选票,有效票要求只有一个名字且名字在选民列表中。注意去除换行符。
# 请在______处使用一行代码或表达式替换
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 = 0for vote in votes:
num = len(vote.split())
if num == 1and vote in names:
D[vote[:-1]] = D.get(vote[:-1], 0) + 1
NUM += 1else:
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))
七、Turtle绘制正五边形
和八边形思路一样,外角72°。
# 请在______处使用一行或多行代码替换# 注意:请不要修改其他已给出代码import turtle
turtle.pensize(2)
d = 0for i inrange(1, 6):
turtle.fd(100)
d += 360 / 5
turtle.seth(d)
八、投票系统进阶
分两步:先统计有效票数,再找出得票最多的人气明星。
# py201.py# 请在______处使用一行代码或表达式替换# 注意:请不要修改其他已给出代码
f = open("vote.txt")
names = f.readlines()
f.close()
n = 0for name in names:
num = len(name.split())
if num == 1:
n += 1print("有效票{}张".format(n))
# py202.py# 请在______处使用一行代码或表达式替换# 注意:请不要修改其他已给出代码
f = open("vote.txt")
names = f.readlines()
f.close()
D = {}
for name in names:
iflen(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))
九、Turtle绘制十二边形
外角30°,循环12次。
# 301,请在空格处补充代码import turtle
turtle.pensize(2)
d = 0for i inrange(1, 13):
turtle.fd(40)
d += 360 / 12
turtle.seth(d)
十、向量积运算
两个等长列表对应元素相乘再求和。
# 请补充若干行代码,完成向量积运算
ls = [111, 222, 333, 444, 555, 666, 777, 888, 999]
lt = [999, 777, 555, 333, 111, 888, 666, 444, 222]
s = 0for i inrange(len(ls)):
s += (ls[i] * lt[i])
print(s)
十一、Turtle几何图形组合
先画正方形,然后抬起画笔移到左上角开始画圆,圆心位置和半径需要简单推导。
# 在横线处补充代码,不得修改其它代码# PY201.pyimport turtle
turtle.pensize(2)
for i inrange(4):
turtle.fd(200)
turtle.left(90)
turtle.left(360 - 45)
turtle.circle(100 * pow(2, 0.5))
十二、文本数字检测
输入必须不含数字,用遍历检测。
# 请完善如下代码# 在....处填写多行代码,不得修改其他代码# PY202.pywhileTrue:
s = input("请输入不带数字的文本:")
i = 0for num in s:
if'0' <= num <= '9':
i += 1if i == 0:
breakprint(len(s))
十三、Turtle坐标绘图
在给定的坐标系上绘制柱状图,每个柱子间隔50像素,高度由列表给出。
# 在____________上补充代码# 请不要修改其他代码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(5)
for i inrange(len(ls)):
t.penup()
t.goto(x0 + (i + 1) * 50, y0)
t.seth(90)
t.pendown()
t.fd(ls[i])
t.done()
十四、随机数生成与用户验证
预置用户名和密码,输入检查后给出随机验证码。
# 在......上补充一行或多行代码# 不得修改其他代码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("对不起,您输入的用户信息不存在。")
十五、Turtle随机绘图
在随机位置画随机半径的圆,颜色随机选择。
# 在____________上补充代码# 请不要修改其他代码import turtle as t
import random as r
color = ['red', 'orange', 'blue', 'green', 'purple']
r.seed(1)
for i inrange(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()
十六、卷积运算模拟
一维卷积,滤波器[0.1,0.8,0.1]滑过列表,输出格式控制到三位小数。
# 请在.....处填写多行表达式或语句# 不得修改其他代码
img = [0.244, 0.832, 0.903, 0.145, 0.26, 0.452]
filter = [0.1, 0.8, 0.1]
res = []
for i inrange(len(img) - 2):
k = 0for j inrange(3):
k += filter[j] * img[i + j]
res.append(k)
for r in res:
print('{:<10.3f}'.format(r), end='')
十七、Turtle复杂图形绘制
在多个指定点画放射状短线,长度随机。
# 在____________上补充代码# 请不要修改其他代码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 inrange(4):
x0, y0 = points[i]
t.penup()
t.goto(x0, y0)
t.pendown()
length = r.randint(6, 16)
for j inrange(angles):
t.fd(length)
t.backward(length)
t.right(360 / angles)
t.done()
十八、CSV数据处理
从data202.txt读取,每行解析出学校和所属国家,统计每个国家学校数量并列出来。
# 在......上补充一行或多行代码# 在____________上补充一行代码# 可以修改代码
f = open('data202.txt', 'r')
school = []
country = []
for line in f:
lines = line.strip('\n').split(",")
if lines != ['']:
school.append(lines[1:3])
country.append(lines[-1])
country = list(set(country))
unis = []
for i in country:
n = 0
schools = []
result = []
for k in school:
if k[1] == i:
n += 1
schools.append(k[0])
result = [i, n, schools]
unis.append(result)
for d in unis:
print('{:>4}: {:>4} : {}'.format(d[0], d[1], ''.join(d[2])))
f.close()
十九、Turtle随机矩形
随机位置、随机边长,画3个矩形。
# 在____________上补充代码# 请不要修改其他代码import turtle as t
import random as r
r.seed(1)
t.pensize(2)
for i inrange(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 inrange(4):
t.fd(length)
t.seth(90 * (j + 1))
t.done()
二十、执行时间统计
读取out.txt,解析操作名、时间和百分比,计算总时间并找出占比最高的前三。
# 请在.....处填写多行表达式或语句# 请在_____处填写一行表达式或代码
sumtime = 0
percls = []
ts = {}
withopen('out.txt', 'r') as f:
for line in f.readlines():
line = line.strip('\n').split(',')
sumtime += eval(line[1])
ts[line[0]] = line[2]
print('the total execute time is ', sumtime)
tns = list(ts.items())
tns.sort(key=lambda x: x[1], reverse=True)
for i inrange(3):
print('the top {} percentage time is {}, spent in "{}" operation'.format(i, tns[i][1], tns[i][0]))
二十一、Turtle同心圆
画三个半径递增的同心圆,注意调整圆心位置让半径差对齐。
# 在____________上补充代码import turtle as t
color = ['red', 'green', 'blue']
rs = [10, 30, 60]
for i inrange(3):
t.penup()
t.goto(0, -(rs[i] - rs[0]))
t.pendown()
t.pencolor(color[i])
t.circle(rs[i])
t.done()
二十二、中文分词统计
用jieba分词,过滤掉逗号和句号,统计非标点词语数量。
# 在……上补充一行或多行代码# 可以修改其他代码import jieba
s = input("请输入一段中文文本,句子之间以逗号分隔:")
slst = jieba.lcut(s)
wordstr = ""
num = 0for word in slst:
if word notin [',', '。']:
wordstr = wordstr + word + "/"
num += 1print(wordstr)
print("非标点符号的中文词语个数是" + str(num))
二十三、Turtle网格绘图
画4列,每列画4个小正方形,间距80。
import turtle
n = 4for j inrange(n):
turtle.pendown()
for i inrange(4):
turtle.fd(40)
turtle.right(90)
turtle.penup()
turtle.fd(80)
turtle.done()
二十四、随机数与用户交互
三次机会输入名字,如果匹配则给随机验证码,输入'q'退出。
# 在……上补充一行或多行代码,不得修改其他代码import random as r
r.seed(0)
persons = ['Aele', 'Bob', 'lala', 'baicai']
flag = 3while flag > 0:
flag -= 1
name = input("请输入一个名字:")
if name in persons:
num = r.randint(1000, 9999)
print('{} {}'.format(name, num))
elif name == 'q':
breakelif name notin persons:
print('对不起,您输入的名字不存在。')
二十五、Turtle随机颜色圆
画5个随机位置、随机大小、颜色随机的圆。
import turtle as t
import random as r
color = ['red', 'green', 'blue', 'purple', 'black']
r.seed(1)
for j inrange(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()
二十六、中文词频统计
用jieba分词,统计长度>=2的词语频次,结果写入result202.txt。
# 在……上补充一行或多行代码import jieba
s = input("请输入一个中文字符串,包含逗号和句号:\n")
words = jieba.lcut(s)
d = {}
for i in words:
iflen(i) >= 2:
d[i] = d.get(i, 0) + 1
lt = list(d.items())
fo = open("result202.txt", "w", encoding='utf-8')
for i in lt:
fo.write("{}:{}".format(i[0], i[1]))
fo.close()
二十七、Turtle复杂路径
四个随机位置,每个位置画四条线段绕一周,半径200内随机。
# 在____________上补充代码(12 根短线)import turtle as t
import random as r
color = ['red', 'blue', 'purple', 'black']
r.seed(1)
for j inrange(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 inrange(1, 5):
t.fd(ra)
t.seth(90 * i)
t.done()
二十八、文本清洗与分词
把文章中特定符号替换为空,然后用jieba分词,统计词语数。
# 在____________上补充代码(12 根短线)# 请在.....处填写多行表达式或语句# 可以修改其他代码# 在……上补充一行或多行代码(6 个点)import jieba
dela = '-;:,.()"<>'
s = input("请输入一句话:")
print("\n这句话是:{}".format(s))
new = ""for i in s:
if i in dela:
i = ""
new = new + i
wordlists = jieba.lcut(new)
print("替换之后是:{}".format(new))
print("里面有 {}个词语。".format(len(wordlists)))
二十九、Turtle填充图形
画一个正方形,然后在中心画一个绿色边、红色填充的圆。
# 请在______处补充一行代码# 请不要修改其他代码import turtle as t
for i inrange(4):
t.forward(200)
t.left(90)
t.penup()
t.goto(100, 0)
t.pendown()
t.color("green", "red")
t.pensize(5)
t.begin_fill()
t.circle(100)
t.end_fill()
t.done()
三十、文本分词与排序
读取文件,移除标点,用jieba分词,统计词频并输出前5个高频词。
# 请在.....处填写多行表达式或语句# 不得修改其他代码import jieba
fuhao = [",", ":", "、", "。", ";", "'", "'"]
withopen("data_19report.txt", "r", encoding="utf-8") as f:
all_txt = f.read()
for ch in fuhao:
all_txt = all_txt.replace(ch, '')
words = jieba.lcut(all_txt)
for i in words[:-1]:
print(i, end='/')
print(words[-1])
d = {}
for i in words:
d[i] = d.get(i, 0) + 1
ls = list(d.items())
ls.sort(key=lambda x: x[1], reverse=True)
for i inrange(5):
print('{}:{}'.format(ls[i][0], ls[i][1]))
三十一、Turtle蛇形绘图
定义函数,用随机角度画蛇形曲线。
# 在____________上补充代码# 不要修改其他代码import random as r
import turtle as t
defdrawSnake(angl):
t.penup()
t.goto(0, 200)
t.pendown()
t.seth(-1 * angl)
for i inrange(length):
t.circle(radius, angl)
t.circle(-radius, angl)
length, radius = 3, 40
r.seed(1)
color = ['red', 'blue', 'purple', 'black']
for i inrange(4):
t.pencolor(r.choice(color))
angl = r.randint(30, 180)
drawSnake(angl)
t.done()
三十二、学生成绩分析
从data202.txt读数据,分号分隔学生,逗号分隔字段,找出最高分和最低分的学生。
# 在____________上补充代码# 在……上补充一行或多行代码# 可以修改其他代码
fi = open("data202.txt", 'r')
lls = fi.read().split(';')
print("一共有{}个学生".format(len(lls)))
students = []
for i in lls:
tem = i.split(',')
students.append(tem)
students.sort(key=lambda x: x[2], reverse=True)
max_score = students[0][2]
max_name = []
for i in students:
if i[2] == max_score:
max_name.append(i[1])
min_score = students[-1][2]
min_name = []
for i in students:
if i[2] == min_score:
min_name.append(i[1])
print("最高分:{}:{}".format(max_score, ','.join(max_name)))
print("最低分:{}:{}".format(min_score, ','.join(min_name)))
三十三、Turtle多边形绘制
从左到右依次画五个正五边形,间隔70像素。
# 在____________上补充代码# 不要修改其他代码import turtle as t
color = ['red', 'green', 'blue', 'orange', 'pink']
for i inrange(5):
t.penup()
t.goto(-200 + i * 70, 0)
t.pendown()
t.pencolor(color[i])
t.circle(50, steps=5)
t.done()
三十四、蒙特卡洛模拟
循环调用函数,每次生成随机数累加,输出轮次、darts和总和。
# 在____________上补充代码# 在……上补充一行或多行代码# 可以修改其他代码import random as r
defcalpi(c, darts):
p = 0for i inrange(darts):
p += r.randint(0, darts)
print("{:2}{:12}{:12}".format(c, darts, p))
n = 4
DART = 3
r.seed(1)
for i inrange(n):
c = i + 1
darts = c * DART
calpi(c, darts)