使用嵌套列表制作毕业文凭(Python):可行性及报错求助
毕业文凭嵌套列表需求完全可行,附修正实现
需求肯定能实现
这个需求逻辑完全通顺,嵌套列表天生适合承载「文凭→课程/学生→小组→学生→个人信息」的层级结构,完全可以落地。
你的代码问题在哪
你写的代码逻辑完全跑偏了——反复把数字转成字符列表、移除元素再嵌套,根本没贴合「5组→每组5个学生→每个学生5项信息」的结构设计,添加输入时自然会一堆报错。比如list(str(i))会把数字拆成单个字符的列表,后续remove操作很容易因为找不到元素触发错误,而且这种嵌套方式根本装不下学生的5项信息。
正确实现示例
方式1:手动构造固定结构
先定义课程列表,再按要求的层级搭建学生列表:
# 构建毕业文凭嵌套结构 diploma = { "课程列表": ["高等数学", "计算机基础", "专业核心课", "实践实训", "毕业设计"], "学生列表": [] } # 生成5个小组 for group_num in range(1, 6): current_group = [] # 每组添加5名学生 for student_num in range(1, 6): # 每名学生的5项示例信息,可按需修改 student_info = [ f"小组{group_num}学生{student_num}", "软件工程", 88.5, # 平均成绩 "良好", # 毕业评级 "2020级" ] current_group.append(student_info) diploma["学生列表"].append(current_group) # 验证结构 print(diploma)
方式2:支持用户动态输入
如果需要让用户输入信息,用嵌套循环接收即可:
diploma = { "课程列表": [], "学生列表": [] } # 输入5门课程 print("请输入5门课程名称:") for _ in range(5): course = input("课程名:") diploma["课程列表"].append(course) # 输入学生信息 for group_idx in range(5): print(f"\n--- 第{group_idx+1}组学生信息录入 ---") group = [] for student_idx in range(5): print(f"\n请输入第{student_idx+1}名学生的5项信息(姓名、专业、平均成绩、毕业评级、年级):") name = input("姓名:") major = input("专业:") score = float(input("平均成绩:")) rating = input("毕业评级:") grade = input("年级:") student = [name, major, score, rating, grade] group.append(student) diploma["学生列表"].append(group) # 输出最终结果 print("\n=== 生成的毕业文凭结构 ===") print(diploma)
这两种写法都严格对应了教授的要求,不管是固定数据还是用户输入,都能正常运行,不会出现你之前的错误。
内容的提问来源于stack exchange,提问作者momoshki
相关产品推荐
相关产品推荐

