如何实现字典values求和与缺失keys的反馈功能?
解决方案
针对你提出的两个功能需求,我对代码做了如下修改,同时保留清晰的逻辑结构:
修改后的代码
skills = { "python": 1, "ruby": 2, "bash": 4, "git": 8, "html": 16, "tdd": 32, "css": 64, "javascript": 128 } # 处理用户输入:拆分技能、去除空格、统一小写避免大小写匹配问题 user_input = input("Enter your coding skills out of the following - python, ruby, bash, git, html, tdd, css and javascript: ") user_skills_list = [skill.strip().lower() for skill in user_input.split(',')] score = 0 invalid_skills = [] # 遍历用户输入的技能,计算得分并收集无效项 for skill in user_skills_list: if skill in skills: score += skills[skill] else: invalid_skills.append(skill) # 输出得分 print("Your coding skills score is:", score) # 提示无效输入的技能 if invalid_skills: print("注意:以下输入不在预设技能列表中:") for skill in invalid_skills: print(f"- {skill}") print("\n预设技能及对应分值:") for key, value in skills.items(): print(f"- {key}: {value}") # 若需要提示「未输入的预设技能」,可添加以下代码块 # missing_skills = [key for key in skills if key not in user_skills_list] # if missing_skills: # print("\n你未输入的预设技能及其分值:") # for key in missing_skills: # print(f"- {key}: {skills[key]}")
核心修改说明
- 多技能输入支持:用
split(',')将用户输入拆分为单个技能列表,配合strip()和lower()处理输入格式问题,避免因空格、大小写导致的匹配失败 - 得分计算逻辑:遍历拆分后的技能列表,直接判断技能是否在字典中,累加对应分值
- 无效/缺失技能提示:
- 收集不在字典中的输入项,统一告知用户
- 注释部分的代码可实现「提示用户未输入的预设技能」功能,按需启用即可
内容的提问来源于stack exchange,提问作者NW94
相关产品推荐
相关产品推荐

