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

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

一、题目描述

随机生成一批学生的学号(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)

四、总结

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

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


相关文章
|
存储 缓存 监控
JVM 21 的调优指南:如何进行JVM调优,JVM调优参数
聊聊关于JVM 21的优化指南。这篇文章将会深入探讨如何进行JVM调优,介绍一些关键的JVM调优参数,并提供12个实用的代码示例。由于篇幅较长,我会分几个部分来详细讲解,之前写的也有33篇系列教程JVM调优实战打击也可以去围观。
998 0
|
Java Maven
最快的 maven repository--阿里镜像仓库
国内速度超快的maven repository
161629 0
|
2月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
|
10月前
|
机器学习/深度学习 监控 Linux
ollama+openwebui本地部署deepseek 7b
Ollama是一个开源平台,用于本地部署和管理大型语言模型(LLMs),简化了模型的训练、部署与监控过程,并支持多种机器学习框架。用户可以通过简单的命令行操作完成模型的安装与运行,如下载指定模型并启动交互式会话。对于环境配置,Ollama提供了灵活的环境变量设置,以适应不同的服务器需求。结合Open WebUI,一个自托管且功能丰富的Web界面,用户可以更便捷地管理和使用这些大模型,即使在完全离线的环境中也能顺利操作。此外,通过配置特定环境变量,解决了国内访问限制的问题,例如使用镜像站来替代无法直接访问的服务。
|
机器学习/深度学习 人工智能 开发者
Python适合做游戏吗?
【7月更文挑战第2天】Python适合做游戏吗?
452 56
|
Ubuntu
Ubuntu20.04安装软件报错:The following packages have unmet dependencies - 蓝易云
请注意,替换上述命令中的 `<package-name>`为你实际要安装的软件包名。
2988 0
|
消息中间件 监控 安全
探究如何在Linux系统中修改进程资源限制:四种方法调整进程限制,让你的系统高效运行(包含应用层getrlimit和setrlimit API)
探究如何在Linux系统中修改进程资源限制:四种方法调整进程限制,让你的系统高效运行(包含应用层getrlimit和setrlimit API)
2493 0
|
存储 Java 关系型数据库
《阿里巴巴Java开发手册》:五、MySQL数据库
《阿里巴巴Java开发手册》:五、MySQL数据库
|
存储
AFDX总线协议规范
<div class="para"><strong>AFDX总线协议规范</strong></div> <div class="para">1、概述</div> <div class="para">2、 AFDX简介</div> <div class="para">3、AFDX的在数据传输性能的改进</div> <div class="para">3.1 AFDX以太网帧格式</d
3414 0
|
存储 关系型数据库 MySQL
开发规范中为什么要禁用外键约束
开发规范中为什么要禁用外键约束
2887 0
开发规范中为什么要禁用外键约束

热门文章

最新文章