考生文件夹下存在一个文件“PY202.py”’,请在该文件中作答,实现以下功能。 输入某班各个同学就业的职业名称,职业名称之间用空格符间隔(按键结束输入)。完善Python代码,统计各职业就业的学生数量,按数量从大到小的顺序输出。例如输入:护士导游老师护士

admin2021-03-16  31

问题 考生文件夹下存在一个文件“PY202.py”’,请在该文件中作答,实现以下功能。
输入某班各个同学就业的职业名称,职业名称之间用空格符间隔(按键结束输入)。完善Python代码,统计各职业就业的学生数量,按数量从大到小的顺序输出。例如输入:护士导游老师护士老师老师
输出参考格式如下,结果保存在考生文件夹下,命名为“PY202.txt”(其中内容的冒号为英文冒号)。
老师:3
护士:2
导游:1
试题程序:
#以下代码为提示框架
#请在程序的…处使用一行或多行代码替换
#请在程序的________处使用一行代码替换
#注意:提示框架的代码可以任意修改,以完成程序功能为准
fo=open("PY202.txt","w")
names=input{"请输入各个同学职业名称,职业名称之间用空格间隔(按< Enter>键结束输入):")

d={}

ls=1ist(d.items())
ls.sort(key=lambda x:x[1],reverse=True)#按照数量排序
for k in ls:
   fo.write("{}:{}".format(________))
fo.close()

选项

答案fo=open("PY202.txt","w") names=input("请输入各个同学职业名称,职业名称之间用空格间隔(回车结束输入):") name_list=name,split(’’) d={} for item in name_list: d[item]=d.get(item,0)+1 ls=list(d.items()) ls.sort(key=lambda x:x[1],reverse=True) for k in ls: fo.write("{}:{}".format(k[0],k[1])) fo.close()

解析 根据题目要求,要统计数量。需要将字符申变量names转换为列表类型,这可以使用字符串的split()方法,指定空格符作为分隔符对字符串进行切片,并返回分割后的字符串列表name_list。
然后使用for循环遍历列表name_list中的每个元素,若字典d中不存键与该元素相同,就将该元素作为字典d的一个键,该键所对应的值设置为1;若字典d中存在键与该元素相同,就将该键对应的值加1。这需要使用字典的get()方法。
ls=list(d.items())表示将字典类型变成列表类型,字典中的每个键值对对应列表中的一个元组。随后,对列表ls进行排序,排序规则是按照每个元组中第2个元素(即数量)从大到小排列。然后对排序后的列表ls进行for循环遍历,将每个元组中的两个元素(即职业名称和数量)通过“:”连接写入文件“PY202.txt”中。k[0]表示元组中的第1个元素(职业名称),k[1]表示元组中的第2个元素(数量)。
转载请注明原文地址:https://kaotiyun.com/show/aM6p777K
0

最新回复(0)