随机生成学号和成绩并排序

简介: 随机生成学号和成绩并排序

一、题目描述

随机生成一批学生的学号(6位整数)和成绩[0,100],完成以下需求:

  • 按成绩升序排序;
  • 统计各区间[0,60),[60,70),[70,80),[80,90),[90,100]的人数;
  • 列出各区间的名单(按学号降序)。
  • 参考结果如下页:

名单和成绩已生成完毕。

成绩排序:

910861   1

612946   26

726686   32

520680   33

929453   38

507597   47

798982   60

136656   67

153103   84

425355   85

各个区间的人数:

0-60: 6 人

60-70: 2 人

70-80: 0 人

80-90: 2 人

90-100: 0 人

各个区间的名单:

0-60: 507597 726686 520680 929453 612946 910861

60-70: 798982 136656

80-90: 425355 153103

二、题目分析

  1. 首先要随机生成学号和成绩,第一想法当然是random库,生成一个六位学号用random.randint(100000,999999),生成成绩用random.randint(0,100)。这是生成一个学生的,生成多个的话用for循环即可。
  2. 为了最后能统计出来学号和成绩,这里要用字典将随机生成的学号和他对应的成绩匹配上。字典就是最好的方法,以学号作为键,以成绩作为值。这样就能起到一一对应的功能,方面之后检索和统计。
  3. 再生成随机成绩后,每生成一个成绩就进行一次判断,把他放到对应的列表里面,之后用len()就可以多少人了,用"".join()+" "就可以把同一个列表里的学号打印处理啦!
  4. 升序排列用字典按值排序,dic_name_score_sort = sorted(dic_name_score.items(), key=lambda x: x[1])。
  5. 打印区间名单的时候,要加一个判断,当对应列表中没有元素,即len(list) != 0时,打印相关信息,等于0时,就不打印了。

三、代码

直接将代码粘在在下面:

1. import random
2. dic_name_score = {}
3. zero_six = []
4. six_seven = []
5. seven_eight =[]
6. eight_nine = []
7. nine_full = []
8. zero_six_str = ''
9. six_seven_str = ''
10. seven_eight_str = ''
11. eight_nine_str = ''
12. nine_full_str = ""
13. for i in range(10):
14.     student_num = random.randint(100000,999999)
15.     student_score = random.randint(0,100)
16.     dic_name_score[student_num] = student_score
17. if student_score <60:
18.         zero_six.append(student_num)
19. elif 60<= student_score <70:
20.         six_seven.append(student_num)
21. elif 70 <= student_score < 80:
22.         seven_eight.append(student_num)
23. elif 80<= student_score < 90:
24.         eight_nine.append(student_num)
25. else:
26.         nine_full.append(student_num)
27. dic_name_score_sort = sorted(dic_name_score.items(), key=lambda x: x[1])
28. print("名单和成绩已生成完毕。")
29. print("按成绩排序:")
30. for i in dic_name_score_sort:
31. print(i[0]," ",i[1])
32. print("各个区间的人数:")
33. print("0-60:",len(zero_six),"人")
34. print("60-70:",len(six_seven),"人")
35. print("70-80:",len(seven_eight),"人")
36. print("80-90:",len(eight_nine),"人")
37. print("90-100:",len(nine_full),"人")
38. print("各个区间的名单:")
39. if len(zero_six) != 0:
40. for i in range(0,len(zero_six)):
41.         zero_six_str += str(zero_six[i])+" "
42. print("0-60:",zero_six_str)
43. if len(six_seven) != 0:
44. for i in range(0,len(six_seven)):
45.         six_seven_str += str(six_seven[i])+" "
46. print("60-70:",six_seven_str)
47. if len(seven_eight) != 0:
48. for i in range(0,len(seven_eight)):
49.         seven_eight_str += str(seven_eight[i])+" "
50. print("70-80:",seven_eight_str)
51. if len(eight_nine) != 0:
52. for i in range(0,len(eight_nine)):
53.         eight_nine_str += str(eight_nine[i])+" "
54. print("80-90:",eight_nine_str)
55. if len(nine_full) != 0:
56. for i in range(0,len(nine_full)):
57.         nine_full_str += str(nine_full[i])+" "
58. print("90-100:",nine_full_str)

四、总结

这道题不难,总体思路比较清晰,重点在于字典的创建,排序。这题有以下知识点:

  • 产生随机数。
  • 字典创建与排序
  • 列表相关处理与统计
  • 代码逻辑及细节处理


相关文章
|
Java Maven
最快的 maven repository--阿里镜像仓库
国内速度超快的maven repository
160958 0
|
SQL Java 数据库
Springboot整合JPA 多表关联操作 @Query
Springboot整合JPA 多表关联操作 @Query
1182 0
Springboot整合JPA 多表关联操作 @Query
|
调度 Python
队列管理:Python任务调度器
队列管理:Python任务调度器
216 1
|
存储 Linux BI
Linux 三剑客 grep、sed、awk
Linux三剑客`grep`、`sed`和`awk`是强大的文本处理工具。`grep`用正则表达式搜索匹配行;`sed`是流式编辑器,处理文本流而不直接修改原文件;`awk`则用于灵活的文本分析和报告生成。例如,`grep`可查找匹配模式,`sed`可以删除文件内容,而`awk`能提取特定字段。通过组合使用,它们能高效解决复杂文本任务。
263 1
|
SQL 安全 前端开发
Go语言Gin框架安全加固:全面解析SQL注入、XSS与CSRF的解决方案
Go语言Gin框架安全加固:全面解析SQL注入、XSS与CSRF的解决方案
|
Ubuntu
Ubuntu20.04安装软件报错:The following packages have unmet dependencies - 蓝易云
请注意,替换上述命令中的 `<package-name>`为你实际要安装的软件包名。
2813 0
|
存储 Java 关系型数据库
《阿里巴巴Java开发手册》:五、MySQL数据库
《阿里巴巴Java开发手册》:五、MySQL数据库
|
存储 关系型数据库 MySQL
开发规范中为什么要禁用外键约束
开发规范中为什么要禁用外键约束
2593 0
开发规范中为什么要禁用外键约束
|
easyexcel Java API
自从用了 EasyExcel,导入导出 Excel 更简单了!
自从用了 EasyExcel,导入导出 Excel 更简单了!
792 0
|
XML IDE Java
IDEA命令行缩短器助你解决此问题:Command line is too long. Shorten command line...
IDEA踩坑系列提一篇:助你减少排雷时间,聚焦于写代码吧
6939 1
IDEA命令行缩短器助你解决此问题:Command line is too long. Shorten command line...