考生文件夹下存在一个文件PY202.py,请在该文件中作答,实现以下功能。 键盘输入某班各个同学就业的行业名称,行业名称之间用空格间隔(回车结束输入)。完善Python代码, 统计各行业就业的学生数量,按数量从高到低方式输出。例如输入: 护士 旅

admin2020-04-10  31

问题 考生文件夹下存在一个文件PY202.py,请在该文件中作答,实现以下功能。
  键盘输入某班各个同学就业的行业名称,行业名称之间用空格间隔(回车结束输入)。完善Python代码,
统计各行业就业的学生数量,按数量从高到低方式输出。例如输入:
  护士  旅游  老师  护士  老师  老师
  输出参考格式如下,结果保存在考生文件夹下,命名为“PY202.txt”。其中冒号为英文冒号:
  老师:3
  护士:2
  旅游:1
  试题程序:
  #以下代码为提示框架
  #请在程序的…处使用一行或多行代码替换
  #请在程序的_______处使用一行代码替换
  #注意:提示框架代码可以任意修改,以完成程序功能为准
  fo=open(”PY202.txt”,”w”)
  names=input("请输入各个同学行业名称,行业名称之间用空格间隔(回车结束输入):”)
  …
  d={}
  …
  ls=list(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 = names.split(’’) d= {} for item in name_list; d[itam] =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]表示元组中的第一个元素(行业名称),k[1]表示元组中的第二个元素(数量)。
转载请注明原文地址:https://jikaoti.com/ti/n250FFFM
0

最新回复(0)