如何实现让用户为动态生成列表中的每个评估项分配名称与分值?
嘿,这个需求其实用Python的基础工具就能轻松搞定,我给你整理了一套清晰的实现方案:
核心思路:自定义函数+循环实现评估项录入
你不需要依赖什么复杂的内置函数,把收集评估信息的逻辑封装成自定义函数,配合循环和input()就能完美实现你要的交互流程。这样做的好处是代码模块化,后续复用或者修改都很方便。
完整示例代码
def collect_assessments(num_assessments): # 用列表存储所有评估项的信息 assessments = [] # 遍历每个评估项,从1开始计数更符合用户习惯 for assessment_num in range(1, num_assessments + 1): # 询问评估类型 assess_type = input(f"评估{assessment_num}的类型是什么?") # 询问分值,加个简单校验避免无效输入 while True: try: assess_score = float(input(f"该评估的分值是多少?")) break except ValueError: print("哎呀,请输入有效的数字哦!") # 把当前评估的信息存成字典,方便后续处理 assessments.append({"类型": assess_type, "分值": assess_score}) return assessments # 你的初始代码 num_assessment = int(input('How many assessments per student?')) # 调用函数收集所有评估信息 student_assessments = collect_assessments(num_assessment) # 可选:打印录入结果确认 print("\n你录入的评估信息如下:") for idx, assess in enumerate(student_assessments, 1): print(f"评估{idx}:{assess['类型']},分值:{assess['分值']}")
关键细节解释
- 自定义函数
collect_assessments:把收集评估的逻辑打包起来,主代码只需要调用它就行,逻辑清晰不杂乱。 - 循环遍历:用
range(1, num_assessments + 1)直接生成从1开始的序号,不用再手动i+1,提示语更直观。 - 输入校验:用
try-except捕获用户输入非数字的情况,反复提示直到输入有效,避免程序直接崩溃。 - 数据存储:用字典存储每个评估的名称和分值,后续要计算总分、筛选特定评估类型都很方便。
如果只是单纯想实现“提示用户给列表元素命名”的功能,本质就是通过循环逐个调用input()获取输入,自定义函数是让代码更专业、易维护的最佳选择~
内容的提问来源于stack exchange,提问作者TarynE
相关产品推荐
相关产品推荐

