Python在线测试aaaa

实力废人!

1. 哪段文本最多

【问题描述】
对于一篇文章,最大的一段文本体现了最多的信息。编写一个算法,从文件chapter.txt中提取所有的文字,将其中字符数量最多的一段文字保存到新文件maxpara.txt中。
【输入形式】 一个文件
【输出形式】 一个文件
【样例输入】 chapter.txt
【样例输出】 maxpara.txt
【样例说明】 在txt文件中,一段文字就是一行文字,由回车符决定,与其他无关

from pathlib import Path
infile=Path('chapter.txt')
txtlst=infile.read_text(encoding='utf8').split('\n')
txt=max(txtlst,key=len)
outfile=Path('maxpara.txt')
outfile.write_text(txt,encoding='utf8')

read_text之后直接就是list了,所以可以max…
其实最重要的还是注释的那句话,本以为是一行一行写好了的…
但是其实就像html的一样,用’\n’来换行的,所以.split(’\n’)

2.英雄联盟

【问题描述】
英雄联盟是一款火爆的多人在线竞技游戏,现在需要你的帮助来实现一个英雄类(用Legend命名)。
每个英雄应该有自己的名字(name),血量(HP)攻击力(attack)这三个可直接访问的对象变量,在初始化时赋值。
当英雄收到伤害时,调用伤害计算函数(get_damage,该函数应有表示受到的伤害数值的参数),计算伤害后如果血量高于0,则输出英雄名字+" keep fighting!";否则战死,输出英雄名字+" die for glory.";
现在因为一局游戏时间过长,设立一种机制,要求重写“<”运算符,使得两个英雄对象可以直接比较(ob1<ob2这样比较),返回两个英雄对象的血量值比较结果的布尔值。
简化游戏过程为:初始化两个英雄,并互相攻击一次,然后用上面提到的机制判定胜负。已经给定该过程代码,只需实现Legend类即可。
【输入形式】两行,每行为英雄的相应属性
【输出形式】两行战斗过程和最后的比赛结果
【样例输入】
garen 1000 500
timoo 600 700
【样例输出】
garen keep fighting!
timoo keep fighting!
garen win!
【说明】
计算伤害的方式为英雄的生命值直接减去所受的伤害
即使两个英雄同时或者其中一个的HP低于0之后,仍可进行战斗和最后的比较
方法名和属性名使用给定的英文
不要修改已经给定的代码

class Legend:
    def __init__(self,name,HP,attack):
        self.name=name
		self.HP=HP
		self.attack=attack
	def get_damage(self,attack):
		self.HP-=self.attack
		if self.HP>0:
		  print(self.name+"keep fighting!")
		else:
		  print(self.name+"die for glory.")
    def __lt__(self,x):
        return self.HP<x.HP
# 读取红色方和蓝色方两个英雄的信息文件
red_s=input().split()
bule_s=input().split()
# 初始化两个英雄
red=Legend(red_s[0],int(red_s[1]),int(red_s[2]))
bule=Legend(bule_s[0],int(bule_s[1]),int(bule_s[2]))
# 两个英雄各自攻击一次
red.get_damage(bule.attack)
bule.get_damage(red.attack)
# 最后的较量
if red<bule:
    print(bule.name+' win!')
else:
    print(red.name+' win!')

别犯我的低级错误:用attack-HP了…

3.自动下载小说

不好意思原题出错忘搞下来了,将就着我的回忆看吧…
【问题描述】爬取标题和小说内容,去除文本标签并且换行,网页源代码如下
这图片也是我自己简陋写的,也是将就点吧…
在这里插入图片描述
在这里插入图片描述

【输入形式】chapter.html
【输出形式】chapter.txt

from pathlib import Path
from bs4 import BeautifulSoup
s=Path('chapter.html').read_text(encoding='utf8')
soup=BeautifulSoup(s,'lxml')
body=soup.find('body')
#find_all返回的是一个列表,find返回第一个匹配的元素,注意区分
Path('chapter.txt').write_text(body.get_text(),encoding='ytf8')
#get_text可以直接获取文本除去标签
title=body.find('h1').string+'\n'
pas=body.find_all('p')
res=[i.string+'\n' for i in pas]
result=title+''.join(res)
Path('chapter.txt').write_text(result,encoding='utf8')

4.大于零有多少?

【问题描述】

v是一个整数二维数组,打印该数组中大于0的数字的个数。必须使用Numpy函数,严禁使用循环。

【输入形式】

已预制,二维数组
【输出形式】

print大于0的元素的个数
【样例输入】

5 5

0 0 0 2 0

0 1 5 0 0

0 0 2 0 0

1 0 0 5 0

0 1 0 0 0

【样例输出】

7

import  numpy  as  np
m,n=map(int,input().split())
v  =  np.array([list(map(int,input().split())) for i in range(m)])
print((v>0).sum())

5.图像二值化

【问题描述】

图像二值化是常见的图像处理。对于图像中,每个像素的值为0~255,二值化就是根据给定的阈值,将其分为两类,分别为0或255。其中小于等于阈值的部分转换为0,其余转换为255。为简单起见,本题测试用例的阈值为155.
【输入形式】

一个文件in.npy,其中包含一个二维数组,代表一个灰度图像,其中的任意一个值都是在0~255之间。

【输出形式】

保存为一个图片,命名为out.jpg

【样例输入】

1 2 3 4 5

2 3 4 5 6

3 4 5 6 7

【样例输出】

命名为out.jpg的图片。

以下为样例输入在阈值为3的情况下的二维数组形式。注意,以下数值仅做参考,并不是jpg文件中真正的存储形式。测试用例中的阈值设定为155,并不是样例中的3。

0 0 0 255 255

0 0 255 255 255

0 255 255 255 255

【样例说明】

保存图片采用以下代码:

from PIL import Image

im = Image.fromarray(np.uint8(arr))

im.convert(‘L’).save(filename)

其中arr是一个numpy数组

import numpy as np
from PIL import Image
image=np.load('in.npy')
image=np.array(image)
th=155
im=np.where(image<=th,0,255)
im = Image.fromarray(np.uint8(arr))
im.convert('L').save('out.jpg')

6.鸢尾花数据处理

【问题描述】

现要处理鸢尾花数据iris.csv,
1.保留sepal_length大于5的数据;
2.按照鸢尾花的种类(species)分组,得出每种鸢尾花的sepal_width最大值;
3.将四列(sepal_length,sepal_width,petal_length,petal_width)属性相加的结果形成新的一列fertilizer(化肥),表示要施加化肥的数量;
4.按照鸢尾花的种类(species)分组,得出每种鸢尾花的fertilizer平均值;
5.将2与4得到的结果形成DataFrame,按照fertilizer平均值排序后(由小到大)将最终结果写入iris_result.csv文件。

【输入形式】

文件,iris.csv

使用pd.read_csv(‘iris.csv’)读取

【输出形式】

使用to_csv将DataFrame保存

xxx.to_csv(‘iris_result.csv’,index=False,header=True)

【样例输入】

输入的文件内容如下:

sepal_length,sepal_width,petal_length,petal_width,species
4.8,3.4,1.9,0.2,setosa
4.8,3.1,1.6,0.2,setosa
6.8,2.8,4.8,1.4,versicolor
4.9,3.6,1.4,0.1,setosa
6.1,3.0,4.9,1.8,virginica
5.5,2.3,4.0,1.3,versicolor
5.7,2.6,3.5,1.0,versicolor
5.6,2.9,3.6,1.3,versicolor
5.9,3.0,4.2,1.5,versicolor
4.6,3.2,1.4,0.2,setosa
6.7,3.3,5.7,2.1,virginica
5.5,4.2,1.4,0.2,setosa
7.2,3.2,6.0,1.8,virginica
6.6,3.0,4.4,1.4,versicolor
6.2,2.8,4.8,1.8,virginica
6.7,3.3,5.7,2.5,virginica
5.5,2.4,3.7,1.0,versicolor
5.0,3.4,1.5,0.2,setosa
4.9,3.1,1.5,0.1,setosa
6.0,2.2,4.0,1.0,versicolor
6.0,2.2,5.0,1.5,virginica
5.7,2.8,4.5,1.3,versicolor
5.1,3.8,1.9,0.4,setosa
5.0,3.5,1.3,0.3,setosa
5.7,4.4,1.5,0.4,setosa
6.1,2.6,5.6,1.4,virginica
5.2,3.4,1.4,0.2,setosa
6.7,2.5,5.8,1.8,virginica
7.9,3.8,6.4,2.0,virginica
6.3,3.4,5.6,2.4,virginica
5.8,2.7,5.1,1.9,virginica
6.3,3.3,6.0,2.5,virginica
7.2,3.6,6.1,2.5,virginica
4.8,3.0,1.4,0.3,setosa
4.7,3.2,1.3,0.2,setosa
5.1,3.3,1.7,0.5,setosa
6.2,3.4,5.4,2.3,virginica
6.5,3.0,5.8,2.2,virginica
7.0,3.2,4.7,1.4,versicolor
4.3,3.0,1.1,0.1,setosa
5.8,4.0,1.2,0.2,setosa
6.0,2.7,5.1,1.6,versicolor
6.4,2.7,5.3,1.9,virginica
5.7,2.9,4.2,1.3,versicolor
4.7,3.2,1.6,0.2,setosa
6.2,2.2,4.5,1.5,versicolor
5.0,3.0,1.6,0.2,setosa
4.4,3.2,1.3,0.2,setosa
6.3,2.5,5.0,1.9,virginica
7.7,3.0,6.1,2.3,virginica
6.4,2.8,5.6,2.2,virginica
4.9,3.0,1.4,0.2,setosa
5.8,2.7,5.1,1.9,virginica
5.3,3.7,1.5,0.2,setosa
5.5,2.4,3.8,1.1,versicolor
6.9,3.1,5.4,2.1,virginica
5.4,3.7,1.5,0.2,setosa
6.6,2.9,4.6,1.3,versicolor
5.1,3.8,1.5,0.3,setosa
5.8,2.6,4.0,1.2,versicolor
6.1,2.9,4.7,1.4,versicolor
6.3,2.9,5.6,1.8,virginica
6.5,2.8,4.6,1.5,versicolor
5.0,3.5,1.6,0.6,setosa
6.0,3.0,4.8,1.8,virginica
5.4,3.9,1.7,0.4,setosa
4.8,3.0,1.4,0.1,setosa
5.7,2.8,4.1,1.3,versicolor
6.8,3.0,5.5,2.1,virginica
6.5,3.0,5.5,1.8,virginica
5.0,2.0,3.5,1.0,versicolor
5.1,3.4,1.5,0.2,setosa
5.9,3.0,5.1,1.8,virginica
5.0,2.3,3.3,1.0,versicolor
7.2,3.0,5.8,1.6,virginica

【样例输出】

对应的输出文件内容为:

sepal_width,fertilizer
4.4,10.936363636363637
3.2,14.29473684210526
3.8,17.011111111111113

import pandas as pd
df=pd.read_csv('iris.csv')
df=df[df.speal_length>5]
x=df.groupby(['species'])['sepal_width'].max()
df['fertilizer']=df['sepal_length']+df['sepal_width']+df['petal_length']+df['petal_width']
y=df.groupby(['species'])['fertilizer'].mean()
out=pd.DataFrame({'sepal_width':x,'fertilizer':y})
result=out.sort_values(by='fertilizer')
result.to_csv('iris_result.csv',index=False,header=True)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值