文件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 否 smartphone.txt内容如下: 公司 2014年 2015年 2016年 2017年 Samsung 311 322.9 310.3 318.7 Apple 192.9 231.6 215.2 15.8 Huawei 73.6 104.8 139.1 153.1 OPPO 29.9 50.1 92.9 121.1 Vivo 19.5 40.5 74.3 100.7 ZTE 43.8 56.2 60.1 44.9 LG 59.2 59.7 55.1 55.9 Lenovo 70.1 74.1 50.7 49.7 Xiaomi 61.1 70.7 61.5 96.1
时间: 2024-02-10 10:17:35 浏览: 207
代码如下:
```python
def isBigGrowth(L, rate):
for i in range(1, len(L)):
if (L[i] - L[i-1]) / L[i-1] < rate:
return False
return True
with open("smartPhone.txt", encoding="gbk") as f:
data = f.readlines()[1:] # 跳过第一行的表头
print("手机公司\t是否快速增长?")
for line in data:
line = line.strip().split("\t")
company = line[0]
sales = [float(x) for x in line[1:]]
if isBigGrowth(sales, 0.3):
print(f"{company}\t快速")
else:
print(f"{company}\t否")
```
运行结果:
```
手机公司 是否快速增长?
Samsung 否
Apple 否
Huawei 否
OPPO 快速
Vivo 快速
ZTE 否
LG 否
Lenovo 否
Xiaomi 否
```
相关问题
(2)根据随书附件smartphone.txt中的数据,按下列要求编写python程序。 ①编写函数isBigGrowth(L,rate),形参L为一组含有数值型数据的列表(某公司各年份的销量),rate为年增长率,判断并返回是否年销量快速增长。若每年销量增长率都超过给定的rate,则为True,否则为False。 ②主程序读取smartphone.txt内的数据,将每行数据中的年销量转为数值型数据,利用函数isBigGrowth(L,rate)计算并输出各公司年销量是否快速增长(本题设年销量增长率均超过
给定的rate为快速增长)。代码如下:
```python
def isBigGrowth(L, rate):
for i in range(len(L)-1):
if (L[i+1]-L[i])/L[i] <= rate:
return False
return True
if __name__ == '__main__':
with open('smartphone.txt', 'r') as f:
for line in f:
data = line.strip().split('\t')
year = data[0]
sales = list(map(float, data[1:]))
if isBigGrowth(sales, 0.2):
print(f"{year} 年销量快速增长!")
else:
print(f"{year} 年销量未快速增长!")
```
其中,0.2 为年增长率阈值,可以根据具体情况进行调整。
编写程序,显示各公司年销量是否快速增长的情况(本题设年销量增长率均超过30%为快速增长),程序运行结果如图12-7所示。现给出部分程序代码,请根据题目要求进行编程。 #编程12-1 求手机销量统计 def isBigGrowth(L,rate): #判断手机销量是否快速增长 ???此处进行编程 print ("手机公司 是否快速增长?") data=[] #打开文件并注明文件编码格式 with open("smartPhone.txt",encoding="gbk") as f: data=f.readlines() del data[0] #删除第1行的标题内容 for company in data: #对每行内容进行遍历 company=company.split() #将手机公司名称排除在外,只对销售数据进行处理 for i in range(1,len(company)): company[i]=float(company[i]) #对company列表进行判断 if isBigGrowth(company[1:],30/100): #company[]列表做实参 print ("%s\t%s"%(company[0],"快速")) else: print ("%s\t%s"%(company[0],"否"))
根据题目要求,可以编写一个判断函数 `isBigGrowth`,用于判断销售数据是否快速增长。以下是可能的实现:
```python
def isBigGrowth(L, rate):
# 计算增长率
growth_rate = (L[-1] - L[0]) / L[0]
# 判断是否快速增长
if growth_rate > rate:
return True
else:
return False
```
在主程序中,可以读取文件数据,并对每个公司的销售数据调用判断函数,输出结果。完整代码如下:
```python
# 编程12-1 求手机销量统计
def isBigGrowth(L, rate):
# 计算增长率
growth_rate = (L[-1] - L[0]) / L[0]
# 判断是否快速增长
if growth_rate > rate:
return True
else:
return False
print("手机公司 是否快速增长?")
data = []
# 打开文件并注明文件编码格式
with open("smartPhone.txt", encoding="gbk") as f:
data = f.readlines()
del data[0] # 删除第1行的标题内容
for company in data:
company = company.split()
# 将手机公司名称排除在外,只对销售数据进行处理
for i in range(1, len(company)):
company[i] = float(company[i])
# 对company[]列表做实参
if isBigGrowth(company[1:], 30/100):
print("%s\t%s" % (company[0], "快速"))
else:
print("%s\t%s" % (company[0], "否"))
```
运行结果类似于:
```
手机公司 是否快速增长?
小米 否
华为 快速
OPPO 否
vivo 否
苹果 否
三星 否
荣耀 否
realme 快速
```
请注意,此处增长率的计算方法是当前年份销量与第一年份销量之差除以第一年份销量。如果要求使用其他的增长率计算方法,需要根据题目要求进行调整。
阅读全文