用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-05-28 22:05:26 浏览: 309
import random
from faker import Faker
fake = Faker('zh_CN')
# 生成学生信息
def generate_student_info():
stid = str(random.randint(2018, 2021)) + '0' + str(random.randint(1, 3)) + str(random.randint(1, 40)).zfill(2)
stname = fake.name()
bjname = str(stid)[:8]
math = random.randint(40, 100)
eng = random.randint(40, 100)
compu = random.randint(40, 100)
return {'stid': stid, 'stname': stname, 'bjname': bjname, 'math': math, 'eng': eng, 'compu': compu}
# 生成班级信息
def generate_class_info():
return [generate_student_info() for i in range(40)]
# 生成年级信息
def generate_grade_info():
return {'01': generate_class_info(), '02': generate_class_info(), '03': generate_class_info()}
# 生成字典数据对象
stdic = {'2018': generate_grade_info(), '2019': generate_grade_info(), '2020': generate_grade_info(), '2021': generate_grade_info()}
# 访问数据示例
print(stdic['2018']['01'][0]['stid']) # 输出2018010101的学号
print(stdic['2021']['03'][39]['stname']) # 输出2021030339的姓名
阅读全文