Python如何将列表中的字符串赋值到表格指定位置以生成课程表
Python 课程表科目赋值实现方法
完全可以实现,核心思路是先定义课程表的二维结构,再给每个科目配置目标位置映射,即可把列表中的科目写入指定单元格,具体实现如下:
实现步骤
- 先定义课程表的基础维度:时间段列表、星期列表,初始化一个对应维度的空二维列表作为课程表容器
- 配置每个科目的目标位置坐标,坐标规则为
(时间段索引, 星期索引),索引默认从0开始计数 - 遍历位置映射,将科目写入二维列表的对应位置
- 格式化输出为ASCII样式的表格
可运行代码示例
subjects_name = ['LAW', 'PHYSICS', 'MARKETING', 'ACCOUNTING', 'MULTIMEDIA'] # 定义课程表基础结构 time_slots = ['8-10am', '10-12am', '12-2Pm'] weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] # 初始化空课程表:3个时间段 × 5个星期,初始值为空字符串 timetable = [['' for _ in range(len(weekdays))] for _ in range(len(time_slots))] # 配置科目对应位置:key为科目名,value为(时间段索引, 星期索引)列表,支持一个科目多个位置 subject_pos = { 'LAW': [(0, 0), (1, 4)], 'PHYSICS': [(1, 1)], 'MARKETING': [(0, 2)], 'ACCOUNTING': [(2, 0), (2, 3)], 'MULTIMEDIA': [(0, 4), (1, 2)] } # 把科目写入对应位置 for sub in subjects_name: for pos in subject_pos.get(sub, []): row, col = pos timetable[row][col] = sub # 格式化输出表格 # 先打印表头分隔线 separator = '+' + '-'*10 + ('+' + '-'*15)*len(weekdays) + '+' print(separator) # 打印表头行 header = '|' + ' '*10 + ''.join([f'|{day:^15}' for day in weekdays]) + '|' print(header) print(separator) # 打印每行课程 for idx, slot in enumerate(time_slots): row = f'|{slot:^10}' + ''.join([f'|{course:^15}' for course in timetable[idx]]) + '|' print(row) print(separator)
可选优化
如果不想手动拼接表格格式,可以安装第三方库prettytable直接生成规范表格,只需把上面的输出部分替换为对应库的调用逻辑即可。
内容的提问来源于stack exchange,提问作者M Syukri
相关产品推荐
相关产品推荐

