编写程序,统计男女生人数,并检查年龄超过18岁学生的姓名。
分析:信息表中每一行存储个人信息,可以考虑用字典存储,其中,姓名作为键,性别和年龄可以作为元组的形式充当值。然后通过字典遍历完成统计和查询。
#编写程序,统计男女生人数,并检查年龄超过18岁学生的姓名。
disStus={'tom':('男',19),'jary':('女',17),'Siri':('男',18),'kuku':('女',20),'xiao':('女',19),'chen':('男',19)}
cnts={}
names=[]
for k,v in disStus.items():
cnts[v[0]]=cnts.get(v[0],0)+1
if v[1]>18:
names.append(k)
print("女生有{}人,男生有{}人".format(cnts['女'],cnts['男']))
print("超过18岁的有")
print(names)
女生有3人,男生有3人
超过18岁的有
['tom', 'kuku', 'xiao', 'chen']
由此,可以做出统计班级学生籍贯的结果
disBoys = {'江苏': 8, '河南': 3, '山东': 5, '日本': 5, '北京': 2}
disGirls = {'江苏': 3, '吉林': 3, '山东': 5}
dic = disBoys.copy()
for k, v in disGirls.items():
dic[k] = dic.get(k, 0) + v
print(dic)
{'江苏': 11, '河南': 3, '山东': 10, '日本': 5, '北京': 2, '吉林': 3}
统计学生购物情况:统计每一类消费项目的平均消费金额;分别统计男、女生总金额平均值
ls = [
{'性别': '女', '书本': 10, '文具': 30, '服饰': 150, '零食': 300, '日用品': 600},
{'性别': '女', '书本': 32, '文具': 41, '服饰': 444, '零食': 123, '日用品': 555},
{'性别': '男', '书本': 12, '文具': 33, '服饰': 643, '零食': 222, '日用品': 555},
{'性别': '男', '书本': 32, '文具': 55, '服饰': 634, '零食': 441, '日用品': 678},
{'性别': '男', '书本': 4, '文具': 22, '服饰': 126, '零食': 55, '日用品': 642},
{'性别': '女', '书本': 44, '文具': 39, '服饰': 2121, '零食': 445, '日用品': 632},
{'性别': '女', '书本': 11, '文具': 23, '服饰': 1212, '零食': 531, '日用品': 126},
{'性别': '男', '书本': 24, '文具': 63, '服饰': 5312, '零食': 632, '日用品': 743},
{'性别': '男', '书本': 33, '文具': 42, '服饰': 4421, '零食': 312, '日用品': 412},
{'性别': '男', '书本': 24, '文具': 22, '服饰': 1332, '零食': 311, '日用品': 555}
]
# 统计每一类消费项目的平均消费金额
total = {}
for dic in ls: # 遍历列表中每一个字典元素
for k, v in dic.items(): # 遍历当前字典元素的每一个条件
if k != '性别':
total[k] = total.get(k, 0) + v
print("每一类消费项目的平均消费金额如下:")
for key in total.keys():
print(key, end='\t')
print()
for value in total.values():
print(value / len(ls), end='\t')
# 分别统计男、女生平均消费总金额
dicAcg = {}
dicCnt = {}
for dic in ls:
s = 0
for k, v in dic.items():
if k != '性别':
s = s + v # 将同一学生消费金额求和
dicAcg[dic['性别']] = dicAcg.get(dic['性别'], 0) + s # 按性别累加金额消费
dicCnt[dic['性别']] = dicCnt.get(dic['性别'], 0) + 1 # 按性别统计人数
for sex in ['男', '女']:
dicAcg[sex] /= dicCnt[sex]
print("\n男、女平均消费总金额是:")
print(dicAvg)
每一类消费项目的平均消费金额如下:
书本 文具 服饰 零食 日用品
22.6 37.0 1639.5 337.2 549.8
男、女平均消费总金额是:
{'女': 1867.25, '男': 3065.3333333333335}