整理了一下五道题的解法,有借鉴+修改的,也有自己写的。
1.有"员工信息.txt"文档,内容如下:
张三22男
李四26男
张华24女
请用python对此文件进行处理,输出格式为姓名,年龄,性别(也就是中间用“,”分割)。
import re#引进re库(使用正则表达式)
with open("员工信息.txt",encoding="utf-8") as f:
#用with语句定义一个接收打开文件函数的变量f,也方便后面with自动帮忙关掉文件
for item in f.read().splitlines():#f.read().splitlines()逐行读取过滤换行符
age=''.join(re.findall('\d',item))# 查找每一行中所有的数字,
#\d--读取数字并以join函数以空格分开
info=item.split(age)#去掉年龄分割名字性别
print(info[0]+","+age+","+info[1])#在年龄性别前后各加一个逗号并进行逐行输出
运行结果在文件中打开:
2.生成一个列表X,列表的值在-50到+50,从-50开始,间隔为1,在设计一个一元二次函数(超参数可以 自己定义),针对上述的X,生成Y,然后将Y加上随机生成[-2,+2]区间内的噪声,使用matplotlib库进行 可视化展示。
import matplotlib.pyplot as plt
# matplotlib是python的一个绘图库,最常用的可视化工具之一
import numpy as np
# 开源的数值计算扩展工具用于储存和处理大型多维矩阵
import random
def show_y(x):
i=random.uniform(-2,2.1)# 噪声
y=2*x*x+i
return y
x=np.arange(-50,50)
y=show_y(x)
plt.plot(x,y)
plt.show()#使用matplotlib库进行可视化展示
# 下边是对两个函数的作用解释
"""
np.arange()函数
返回值: np.arange()函数返回一个有终点和起点的固定步长的排列,如[1,2,3,4,5],起点是1,终点是5,步长为1。
参数个数情况: np.arange()函数分为一个参数,两个参数,三个参数三种情况
1)一个参数时,参数值为终点,起点取默认值0,步长取默认值1。
2)两个参数时,第一个参数为起点,第二个参数为终点,步长取默认值1。
3)三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长。其中步长支持小数。
"""
"""
plt.plot()函数是matplotlib.pyplot模块下的一个函数,用于画图,可绘制点和线
plt.plot(x,y,format_string,**kwargs)
参数介绍:
x:X轴数据,列表或数组。
y:Y轴数据,列表或数组。
format_string:控制曲线的格式字符串,可选。
**kwargs:第二组或更多(x,y,format_string),可画多条曲线。
3、format_string:由颜色字符、风格字符、标记字符组成
颜色字符举例:
‘b’ :蓝色
‘c’: 青绿色
‘g’: 绿色
‘k’ :黑色
‘m’:洋红色
‘r’: 红色
‘w’:白色
‘y’: 黄色
风格字符举例:
‘‐’ 实线
‘‐‐’ 破折线
‘‐.’ 点划线
‘:’ 虚线
‘’ ’ ’ 无线条
标记字符举例:
‘.’ 点标记
‘,’ 像素标记(极小点)
‘o’ 实心圈标记
‘v’ 倒三角标记
‘^’ 上三角标记
‘>’ 右三角标记
‘<’ 左三角标记
**kwargs
这是一大堆可选内容,可以来里面指定很多内容,如“label”指定线条的标签,“linewidth”指定线条的宽度,等等
常用的几个:
color 指定颜色
label 线条的标签
linestyle 线条的风格
linewidth 线条的宽度
"""
展示的结果是一个二元一次方程的抛物线:
3.有excel表格,第一列为学号,第二列为学生姓名,第三列为学生性别,
1.第四列为学生成绩,分数在0-100之间,根据成绩,在第五列讲成绩转化为五级制,分别是“优秀(90 分以上)、良好、中等、及格、不及格(60分一下)“。
2.第四列为学生五级制成绩,分别是“优秀(90分以上)、良好、中等、及格、不及格(60分一下)“, 根据五级制成绩,逆向生成学生成绩(注意要在每一个区间之内)。
import xlwt# 引入xlwt数据库用来将数据写入Excel文档中
datalist = [['1', '张三', '男', '95'], ['2', '李四', '女', '73'], ['3', '王五', '男', '61'], ['4', '赵六', '男', '44']]
workbook = xlwt.Workbook(encoding="utf-8", style_compression=0) # 创建workbook对象
worksheet = workbook.add_sheet('学生信息.xls', cell_overwrite_ok=True) # 创建工作表
col = ('学号', '姓名', '性别', '成绩', '级别')
for i in range(0, 5):
worksheet.write(0, i, col[i])# 录入第0行的信息
for j in range(0, 4):
if int(datalist[j][3]) >= 90:
datalist[j].append('优秀')# 追加第五列的信息
elif 80 <= int(datalist[j][3]) < 90:
datalist[j].append('良好')
elif 70 <= int(datalist[j][3]) < 80:
datalist[j].append('中等')
elif 60 <= int(datalist[j][3]) < 70:
datalist[j].append('及格')
elif int(datalist[j][3]) < 60:
datalist[j].append('不及格')
for i in range(0, 4):
for j in range(0, 5):
worksheet.write(i + 1, j, datalist[i][j])# 录入第i+1行,第j列的信息
workbook.save('学生信息.xls')# 保存学生信息
在打开的‘学生信息.xls’Excel表格中展示结果:
4.设计一个猜数游戏,系统生成一个-100到+100之间的整数,用户输入数字,没有猜中给予提示(大或者 小),超过四次判定用户失败,询问用户是否开始下一轮次。
这道题的后续就是知道了超过四次判定用户失败,询问用户是否开始下一轮次怎么写。
import random# 输入随机数
i=0
t=True
while t:
num = random.randint(-100, 100) # randint:函数返回参数1,参数2之间的任意整数
print(num)
for i in range(1, 5):
a = int(input('请输入一个数字:'))
if a == num:
print("恭喜你猜对了!数字是%s" % (num))
break
elif a < num:
print('猜小了!')
else:
print('猜大了!')
if i == 4:
print('游戏失败!')
print('是否继续游戏,继续请按1,退出请按其他:')
b=int(input())
if b == 1:
t=True
print('继续进行游戏')
continue
else:
print('退出游戏')
t=False
两组结果展示:
-80
请输入一个数字:90
猜大了!
请输入一个数字:-90
猜小了!
请输入一个数字:-89
猜小了!
请输入一个数字:-80
恭喜你猜对了!数字是-80
是否继续游戏,继续请按1,退出请按其他:
3
退出游戏
35
请输入一个数字:67
猜大了!
请输入一个数字:54
猜大了!
请输入一个数字:34
猜小了!
请输入一个数字:45
猜大了!
游戏失败!
是否继续游戏,继续请按1,退出请按其他:
1
继续进行游戏
92
请输入一个数字:89
猜小了!
请输入一个数字:92
恭喜你猜对了!数字是92
是否继续游戏,继续请按1,退出请按其他:
3
退出游戏
5.
根据表格中的数据,当再来一个新的数据时,计算新的视频数据和已有之间的欧式距离,然后找出和它 最近的三个邻居(可以是N,这个应该设计为动态,但是要注意边界,比如不可以小于1,不可以大于已 有数据的个数)的距离,计算每个邻居所属标签的概率,输出最高概率的标签。
#应用公式:欧氏距离(即两点之间的距离):((x-x1)**2+(y-y1)**2)**0.5+((x-x2)**2+(y-y2)**2)**0.5+……
f_x=[800,500,600,700]#挥手
f_y=[1200,1000,1000,1500]#踢腿
p_x=[2000,1800,2200,2100]#挥手
p_y=[500,700,400,600]#踢腿
x=int(input("输入挥手次数x:"))
y=int(input("输入踢腿次数y:"))
length_f=[0,0,0,0,0]
length_p=[0,0,0,0,0]
i=0
while i<8:
if i<4:# 足球
length_f[i]=((x-f_x[i])**2+(y-f_y[i])**2)**0.5# 计算新输入的x,y到其他数据的两点之间的距离
else:# 乒乓球
length_p[i-4]=((x-p_x[i-4])**2+(y-p_y[i-4])**2)**0.5# 计算新输入的x,y到其他数据的两点之间的距离
i=i+1
# sort()将数据从小到大排列
length_f.sort()# 挥手
length_p.sort()# 踢腿
# 距离最近的三个邻居(不可以小于1,不可以大于已有数据类型,所以选取的是下标为1,2,3的数据)
new_lengtf_f=length_f[1]+length_f[2]+length_f[3]
new_lengtf_p=length_p[1]+length_p[2]+length_p[3]
if new_lengtf_f<new_lengtf_p:
print("足球!")
else:
print("乒乓球!")
结果展示:
五道题的写法如上,可能会有错误,如果有看到错误希望指出,一起找错。