题目:
从input.txt文件中读入以下数据,文件中数据如下:
马克-扎克伯格 711亿 Facebook 美国
阿曼西奥-奥特加 702亿 Zara 西班牙
沃伦-巴菲特 875亿 伯克希尔-哈撒韦公司 美国
比尔-盖茨 1068亿 微软 美国
伯纳德-阿诺特 1060亿 LVMH 法国
……
史蒂夫-鲍尔默 532亿 微软 美国
马云 394亿 阿里巴巴集团 中国
要求按照财产从高到低排序后,仅输出姓名、财产金额、以及三种评价:TOP10%,MIDDLE,BOTTOM10%
其中排序在总人数前10%的【四舍五入,round(len(x)*0.1) 】评价为TOP10%;总人数后10%的【四舍五入,round(len(x)*0.1) 】评价为BOTTOM10%,其余评价为MIDDLE。
1.程序:
# encoding=utf8
with open('input.txt', 'r') as f:
s = f.read()
lt = s.split('\n')
for i in range(len(lt)):
lt[i] = lt[i].split(' ')
lt2 = [] # 姓名
lt3 = [] # 资产
for i in lt:
lt2.append(i[0])
lt3.append(i[1])
lt4 = [] # 存放'亿'前面的数字
for i in range(len(lt3)):
lt4.append(int(lt3[i].replace('亿', '')))
# 冒泡排序,从高到低
for i in range(len(lt4)):
for j in range(0, len(lt4) - i - 1):
if lt4[j] < lt4[j + 1]:
lt4[j], lt4[j + 1] = lt4[j + 1], lt4[j]
lt2[j], lt2[j + 1] = lt2[j + 1], lt2[j]
str1 = '' # 初始化要输出的信息
n = len(lt4)
count = round(n * 0.1)
lt5 = []
for i in range(n):
if i < count:
str1 += str(lt2[i]) + ':' + str(lt4[i]) + '亿:' + 'TOP10%\n' # 资产占前10%
if count <= i <= n - count - 1:
str1 += str(lt2[i]) + ':' + str(lt4[i]) + '亿:' + 'MIDDLE\n' # 资产中等的
if i > n - count - 1:
str1 += str(lt2[i]) + ':' + str(lt4[i]) + '亿:' + 'BOTTOM10%\n' # 资产占后10%
print(str1)
2.运行结果: