如何用Python搭建性格测试分数统计系统并修复多变量计分异常
问题修复方案
问题根源
- 未存储用户输入结果:仅在首个
if判断时调用了input()获取用户输入,没有将输入值存入变量,后续elif判断中直接将Python内置函数input和字符串做比对,永远不会匹配成功。 - 逻辑遗漏:当前代码仅覆盖了a、b两个选项的判断,缺少c、d对应fantasy、academia的加分逻辑。
修复后的可运行代码
# 美学分数初始化 dark = 0 basic = 0 fantasy = 0 academia = 0 # 先获取用户输入并存入变量 user_choice = input(""" Choose a color scheme! a Black, Grey, Purple b Blue, Pink, White c Green, Grey, Yellow d Brown, Red, Orange >> """) # 基于存储的输入值做判断 if user_choice == "a": dark += 1 elif user_choice == "b": basic += 1 elif user_choice == "c": fantasy += 1 elif user_choice == "d": academia += 1 # 测试打印分数验证结果 print(f"当前分数:dark={dark}, basic={basic}, fantasy={fantasy}, academia={academia}")
多问题扩展优化建议
如果后续要增加更多测试题,推荐用字典存储分数,代码会更简洁易维护,示例逻辑如下:
# 用字典统一管理分数,新增维度无需单独声明变量 score = { "dark": 0, "basic": 0, "fantasy": 0, "academia": 0 } # 可以把所有题目存在列表里批量遍历出题 questions = [ { "prompt": """ Choose a color scheme! a Black, Grey, Purple b Blue, Pink, White c Green, Grey, Yellow d Brown, Red, Orange >> """, "mapping": {"a": "dark", "b": "basic", "c": "fantasy", "d": "academia"} } # 后续新增题目直接在列表里加元素即可 ] for q in questions: choice = input(q["prompt"]).strip() if choice in q["mapping"]: score[q["mapping"][choice]] += 1 print("最终分数结果:", score)
内容的提问来源于stack exchange,提问作者Zeril Stanford
相关产品推荐
相关产品推荐

