You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现让用户为动态生成列表中的每个评估项分配名称与分值?

嘿,这个需求其实用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:36:20