获取考试详情
2026/2/11大约 3 分钟
获取考试详情
获取指定考试的详细信息,包括参考学校、考试科目、参考班级等完整信息。
方法定义
def get_exam_detail(exam_id: str) -> Optional[Exam]参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
exam_id | str | - | 考试 ID |
返回值
如果考试不存在返回 None, 否则返回 Exam 对象,包含以下详细信息:
- 基本信息:考试 ID、名称、年级代码、是否期末考试等
- 学校信息:
exam.schools- 所有参考学校列表 - 班级信息:
exam.clazzs- 所有参考班级列表(包含学校、年级信息) - 科目信息:
exam.subjects- 所有考试科目列表(包含科目 ID、名称、代码、满分)
示例代码
# 先获取考试列表
page_exam = teacher.get_exams()
# 获取第一场考试的详细信息
if page_exam.exams:
exam_id = page_exam.exams[0].id
exam_detail = teacher.get_exam_detail(exam_id)
print(f"考试名称: {exam_detail.name}")
print(f"考试ID: {exam_detail.id}")
print(f"年级代码: {exam_detail.grade_code}")
print(f"是否期末考试: {exam_detail.is_final}")
print()
# 查看参考学校
print(f"参考学校数: {len(exam_detail.schools)}")
for school in exam_detail.schools:
print(f" - 学校ID: {school.id}")
print()
# 查看参考班级
print(f"参考班级数: {len(exam_detail.clazzs)}")
for clazz in exam_detail.clazzs:
print(f" - {clazz.name} (ID: {clazz.id})")
print(f" 学校ID: {clazz.school.id}")
print(f" 年级: {clazz.grade.name} ({clazz.grade.code})")
print()
# 查看考试科目
print(f"考试科目数: {len(exam_detail.subjects)}")
for subject in exam_detail.subjects:
print(f" - {subject.name}")
print(f" 科目ID: {subject.id}")
print(f" 科目代码: {subject.code}")
print(f" 满分: {subject.standard_score}")
print()
# 直接通过已知的考试ID获取详情
exam_detail2 = teacher.get_exam_detail("234567")
# 结合其他接口使用
# 获取详情后,可以直接使用科目 ID 查看阅卷进度
for subject in exam_detail.subjects:
progress_list = teacher.get_marking_progress(subject.id)
print(f"{subject.name} 阅卷进度:")
for progress in progress_list:
rate = (progress.complete_count / progress.all_count * 100) if progress.all_count > 0 else 0
print(f" 题{progress.topic_number}: {rate:.1f}% ({progress.complete_count}/{progress.all_count})")返回示例
考试名称: XX中学2026年期末考试
考试ID: 234567
年级代码: 03
是否期末考试: True
参考学校数: 3
- 学校ID: school_001
- 学校ID: school_002
- 学校ID: school_003
参考班级数: 12
- 高三(1)班 (ID: class_001)
学校ID: school_001
年级: 高三 (03)
- 高三(2)班 (ID: class_002)
学校ID: school_001
年级: 高三 (03)
- 高三(3)班 (ID: class_003)
学校ID: school_001
年级: 高三 (03)
考试科目数: 9
- 语文
科目ID: subject_001
科目代码: 01
满分: 150
- 数学
科目ID: subject_002
科目代码: 02
满分: 150
- 英语
科目ID: subject_003
科目代码: 03
满分: 150
英语 阅卷进度:
题56: 100.0% (3/3)
题57: 100.0% (3/3)
题58: 100.0% (3/3)使用场景
1. 统计参考学校和班级
exam = teacher.get_exam_detail(exam_id)
print(f"本次考试共有 {len(exam.schools)} 所学校参加")
print(f"共有 {len(exam.clazzs)} 个班级参加")2. 批量查看各科目阅卷进度
exam = teacher.get_exam_detail(exam_id)
for subject in exam.subjects:
progress_list = teacher.get_marking_progress(subject.id)
total = sum(p.all_count for p in progress_list)
completed = sum(p.complete_count for p in progress_list)
rate = (completed / total * 100) if total > 0 else 0
print(f"{subject.name}: {rate:.1f}%")3. 获取特定班级的参考情况
exam = teacher.get_exam_detail(exam_id)
my_class_id = "class_001"
# 查找我的班级是否参加了这次考试
my_class = exam.clazzs.find_by_id(my_class_id)
if my_class:
print(f"我的班级 {my_class.name} 参加了本次考试")
else:
print("我的班级未参加本次考试")注意事项
注意
- 此接口返回的科目满分信息可能不完全准确,建议以实际阅卷数据为准
- 返回的数据量较大,建议只在需要完整信息时调用
- 如果只需要科目列表,可以使用
get_exam_subjects()接口,更加轻量