题目一:计算手机销量年增长率
描述
- 文件smartphone.txt存放着某些公司手机年销量数据,每行为每家公司若干年销量(百万),数据间的分隔符为制表符。
- 打开文件请注明文件编码格式:with open(“smartPhone.txt”,encoding=“gbk”) as f:
- 编写函数isBigGrowth(L,rate),形参L为一组含有数值型数据的列表(某公司各年份的销量),rate为年增长率,判断并返回是否年销量快速增长:若每年销量增长率都超过给定的rate,则为True,否则为False。
- 主程序读取smartphone.txt内的数据,将每行数据中的年销量转为数值型数据,利用函数isBigGrowth(L,rate)计算并屏幕输出各公司年销量是否快速增长的情况(本题设年销量增长率均超过30%为快速增长),各数据间以制表符相隔。
- 程序运行结果如下图所示:
手机公司 是否快速增长?
Samsung 否
Apple 否
Huawei 否
OPPO 快速
Vivo 快速
ZTE 否
LG 否
Lenovo 否
Xiaomi 否
rate = 0.3;
def isBigGrowth(L,rate):
for i in range(3):
yearGrowth = (L[i+1]-L[i])/L[i];
if(yearGrowth < rate):
return False;
return True;
with open("smartPhone.txt",encoding="gbk") as f:
data = f.read();
f.close();
listdate = data.split("\n")
dic={}
for i in range(1,10):
shell=listdate[i].split("\t");
dic[shell[0]] = [float(shell[1]),float(shell[2]),float(shell[3]),float(shell[4])]
print("手机公司","是否快速增长?")
for name in dic.keys():
flag = isBigGrowth(dic[name],rate)
print(name,end=" ")
if(flag):
print("快速")
else:
print("否")
题目二:爬取某省的大学排名
描述
输入某省名称,从上海交通大学研发的“软科中国最好大学排名2019”(http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html)爬取数据,输出该省2019年的大学排名。
输入: 广东
输出:
from bs4 import BeautifulSoup;
import requests;
def getHtmlText(url):
try:
r = requests.get(url,timeout = 30);
r.encoding = "utf-8";
print(r.status_code);
return r.text;
except:
return ""
def fillUnivList(uList, html):
#靓汤库煲汤
soup = BeautifulSoup(html,"html.parser");
table = soup.find("table",attrs={'class':'table table-small-font table-bordered table-striped'})
# print(soup)
tbody = table.tbody;
for tr in tbody.find_all("tr"):
message = tr.find_all("td")
uList.append({
"排名":message[0].contents[0],
"学校名称":message[1].contents[0].text,
"省市":message[2].contents[0]
})
return uList
def printUnivList(uList, privince):
print("{:<10}{:^10}{:^10}".format("排名","学校名称","省市"))
for data in uList:
if(data["省市"] == privince):
print("{:<10}{:^10}{:^10}".format(data["排名"],data["学校名称"],data["省市"]))
def main():
unifo = []
url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html";
#输入查找的省份
province = input("输入查找的省份:")
html = getHtmlText(url);
print(html)
unifo = fillUnivList(unifo, html);
printUnivList(unifo,province)
main()