题目一:计算手机销量年增长率
**
**
1.文件smartphone.txt存放着某些公司手机年销量数据,每行为每家公司若干年销量(百万),数据间的分隔符为制表符。
2.打开文件请注明文件编码格式:with open(“smartPhone.txt”,encoding=“gbk”) as f:
3.编写函数isBigGrowth(L,rate),形参L为一组含有数值型数据的列表(某公司各年份的销量),rate为年增长率,判断并返回是否年销量快速增长:若每年销量增长率都超过给定的rate,则为True,否则为False。
4.主程序读取smartphone.txt内的数据,将每行数据中的年销量转为数值型数据,利用函数isBigGrowth(L,rate)计算并屏幕输出各公司年销量是否快速增长的情况(本题设年销量增长率均超过30%为快速增长),各数据间以制表符相隔。
5.程序运行结果如下图所示:
手机公司 是否快速增长?
Samsung 否
Apple 否
Huawei 否
OPPO 快速
Vivo 快速
ZTE 否
LG 否
Lenovo 否
Xiaomi 否
步骤
按行读取TXT文件
fname = ‘./新建文件夹/yob2010.txt’ //文件夹路径
with open(fname,‘r+’,encoding=‘utf-8’) as f:
for line in f.readlines(): //按行读取每行
print(line[:-1].split(',')) //切片去掉换行符,再以‘,’分割字符串 ,得到一个列表
//以空格则是solit('\t')
s = [i[:-1].split(',') for i in f.readlines()] //列表生成器,将文件每行数据按上述方法处理后放入列表
# print(s)
构造函数
def isBigGrowth(L,rate):
f=True;
for i in range(0,len(L)-1):
rrate=(L[i+1]-L[i])/L[i]
if(rrate<rate):
f=False
if(f):
return '快速'
else:
return '否'
完整代码
def isBigGrowth(L,rate):
f=True;
for i in range(0,len(L)-1):
rrate=(L[i+1]-L[i])/L[i]
if(rrate<rate):
f=False
if(f):
return '快速'
else:
return '否'
with open("smartPhone.txt",encoding="gbk") as f:
print('手机公司 是否快速增长?')
s = [i[:-1].split('\t') for i in f.readlines()]
for i in range(1,len(s)):
L=[]
for j in range(1,len(s[i])):
L.append(float(s[i][j]))
print('{} {}'.format(s[i][0],isBigGrowth(L,0.3)))
运行结果