Python习题

题目一:

有"员工信息.txt"文档,内容如下: 张三22男 李四26男 张华24女 请用python对此文件进行处理,输出格式为姓名,年龄,性别(也就是中间用“,”分割)。

代码显示:

import re
with open('员工信息.txt','r',encoding='utf-8') as fp:
    num = re.compile('(\D*)(\d+)(.*)',re.S)
    for i in range(0,3):
        con = fp.readline()
        data = re.findall(num,con)
        print(data[0][0],',',data[0][1],',',data[0][2])

题目二:

生成一个列表X,列表的值在-50到+50,从-50开始,间隔为1,在设计一个一元二次函数(超参数可以 自己定义),针对上述的X,生成Y,然后将Y加上随机生成[-2,+2]区间内的噪声,使用matplotlib库进行 可视化展示。

代码显示:
 

X = [i for i in range(-50,50)]
Y = [i for i in range(0,100)]
print(X)
for i in range(-50,50):
    j=i+50
    Y[j]=X[i]**2-3*X[i]

print(Y)

技术有限,后面的不会了,不懂那个库的使用

题目三:

有excel表格,第一列为学号,第二列为学生姓名,第三列为学生性别, 1.第四列为学生成绩,分数在0-100之间,根据成绩,在第五列讲成绩转化为五级制,分别是“优秀(90 分以上)、良好、中等、及格、不及格(60分一下)“。 2.第四列为学生五级制成绩,分别是“优秀(90分以上)、良好、中等、及格、不及格(60分一下)“, 根据五级制成绩,逆向生成学生成绩(注意要在每一个区间之内)。

代码显示:

datalist = [['1001','张三','男','95'],['1002','李四','女','76'],['1003','王五','男','61'],['1004','赵六','男','44']]
workbook = xlwt.Workbook(encoding="utf-8", style_compression=0)  # 创建workbook对象
worksheet = workbook.add_sheet('学生信息', cell_overwrite_ok=True)  # 创建工作表
col = ('学号', '姓名', '性别', '成绩','级别')

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, 5):
    worksheet.write(0, i, col[i])
for i in range(0, 4):
    data = datalist[i]
    print(data)
    for j in range(0, 5):
        worksheet.write(i + 1, j, data[j])
workbook.save('学生信息.xls')  # 保存数据

其中第二问跟第一问差不多,通过访问Excel表格中的字符串来用random函数生成分数进行追加,不过在xls中追加数据的函数我没有找到

题目四:

设计一个猜数游戏,系统生成一个-100到+100之间的整数,用户输入数字,没有猜中给予提示(大或者 小),超过四次判定用户失败,询问用户是否开始下一轮次。

代码显示:

#4.猜数字游戏
f = True
while f:
    temp = random.randint(0, 3)
    n = 1
    while n<=4:
        guess = int(input('猜一下俺心里想的是哪个数字?\n'))
        if guess == temp:
            print('恭喜你,可算是猜对了!')
            print('还玩吗?')
            if input('1.玩-----2.不玩')=='1':
                f = True
                continue;
            else:
                f=False
                break
        elif guess < temp:
            print('对不起,数字猜的小了!')
        elif guess > temp:
            print('蠢货,猜的太大了!')
        n+=1
    else:
        print('你是个猪吗?这都猜不出来!')
        print('还玩吗?')
        if input('1.玩-----2.不玩') == '1':
            f = True
            continue;
        else:
            break

题目五:

挥手次数_X 踢腿次数_Y 视频内容_lable

800                 1200                         足球

500                 1000                         足球

600                 1000                         足球

700                 1500                         足球

2000                 500                         乒乓球

1800                 700                         乒乓球

2200                 400                         乒乓球

2100                 600                         乒乓球 

根据表格中的数据,当再来一个新的数据时,计算新的视频数据和已有之间的欧式距离,然后找出和它 最近的三个邻居(可以是N,这个应该设计为动态,但是要注意边界,比如不可以小于1,不可以大于已 有数据的个数)的距离,计算每个邻居所属标签的概率,输出最高概率的标签。

代码显示:

import math
wave = [800,500,600,700,2000,1800,2200,2100]
kick = [1200,1000,1000,1500,500,700,400,600]
w = int(input('挥手次数:\n'))
k = int(input('踢腿次数:\n'))
dic = {}
for i in range(0,8):
    if i<3:
        dic['足球',i+1]=int(math.sqrt((w-wave[i])**2+(k-kick[i])**2))
    else:
        dic['乒乓球', i-3] = int(math.sqrt((w - wave[i]) ** 2 + (k - kick[i]) ** 2))
print(dic)

new_dic = sorted(dic.items(),key=lambda d:d[1],reverse=False)

n = int(random.randint(1,8))
print(n)
new_dic2=new_dic[:n]
print(new_dic2)
s=0
p=0
for i in range(0,n):
    if new_dic2[i][0][0]=='足球':
        s+=new_dic2[i][1]
    else:
        p+=new_dic2[i][1]
    num=s+p
print(s,p,num)
print('足球的概率为:%f'%(1-s/num))
print('乒乓球的概率为:%f'%(1-p/num))

其实我知道这样算概率是不太正确的,应该跟线性回归方程有关,就比如输入数据为800,1200,查表就知道是足球,但是动态获取邻居信息的概率,我这种方法很可能是乒乓球概率要大于足球概率,。不过,别的方法我还没想出来要怎么计算概率问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_嘉木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值