用python完成某学院电信科专业有四个年级(2018,2019,2020,2021),每个年级有三个自然班(01,02,03), 每个自然班有 40 名学生,每个学生的信息包括:学号(stid)、姓名(stname)、班级名(bjname), 及高等数学(math)、英语(eng)、计算机(compu)三门课程的成绩,设计一个字典数据对象 stdic,包含四个年级所有自然班的学生,要求能够通过字典键-值的映射,可以直接访 问任一自然班任一学生的任一信息数据。 数据源:要求导入 faker 及 random 库,通过列表推导式生成学号、姓名、班级 名,每名学生的学号为 10 位数字,1-4 位是入学年度,5-6 位是学院专业编号,7-8 位 是同年级专业班级编号,9-10 位是班级学生的序号。三门课程的成绩可使用 random 库的子库从[40,100]范围内随机抽取。
时间: 2023-04-09 22:01:14 浏览: 144
Python-电信用户流失预测
可以回答这个问题。以下是用 Python 设计的字典数据对象 stdic:
```python
from faker import Faker
import random
fake = Faker()
stdic = {}
for year in range(2018, 2022):
stdic[year] = {}
for bjname in range(1, 4):
bjname_str = str(bjname).zfill(2)
stdic[year][bjname_str] = {}
for i in range(1, 41):
stid = str(year) + '0' + str(random.randint(1, 4)) + bjname_str + str(i).zfill(2)
stname = fake.name()
math = random.randint(40, 100)
eng = random.randint(40, 100)
compu = random.randint(40, 100)
stdic[year][bjname_str][stid] = {'stname': stname, 'bjname': bjname_str, 'math': math, 'eng': eng, 'compu': compu}
```
这个字典数据对象 stdic 包含了四个年级所有自然班的学生信息,可以通过以下方式访问任一自然班任一学生的任一信息数据:
```python
# 访问 2018 年 1 班第 1 个学生的姓名
stdic[2018]['01']['2018010101']['stname']
# 访问 2019 年 2 班第 20 个学生的计算机成绩
stdic[2019]['02']['2019020020']['compu']
```
阅读全文