python小测试后续

整理了一下五道题的解法,有借鉴+修改的,也有自己写的。

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])#在年龄性别前后各加一个逗号并进行逐行输出

运行结果在文件中打开:

83bd877cd61a4d2c97ec04726f2a9b79.png

 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 线条的宽度
"""

展示的结果是一个二元一次方程的抛物线:

2fc18cba80884a88832feb60166b6ca6.png

 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表格中展示结果:

e80c84200d0b407fb4f33353e6ea2a94.png

 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.

8fdffa4d1c6a4a04bf8cb4ff4cbc2777.png

根据表格中的数据,当再来一个新的数据时,计算新的视频数据和已有之间的欧式距离,然后找出和它 最近的三个邻居(可以是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("乒乓球!")

结果展示: 

87037ac4d2ee4021be0ffe4d0aec2566.png

 五道题的写法如上,可能会有错误,如果有看到错误希望指出,一起找错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值