KOLB 学习风格测试实现

Introduction

KOLB学习风格分类是由美国教育心理学家大卫·科尔布(David A. Kolb)提出的,它是一种理论框架,用于描述人们如何通过不同的方式学习。根据这个理论,人们的学习风格可以分为四种主要类型,每种类型都与特定的学习偏好和行为模式相关。科尔布的学习风格理论认为,人们可以通过了解和识别自己的学习风格,选择更适合自己的学习方法,从而提高学习效率和效果。同时,他也提倡教育者和学习者应尝试跨越自己的偏好,发展多种学习方式,以促进更全面的认知发展。

思路

1. 一个问题有四个答案,每个答案代表一种维度。

2. 答题结束后对答案进行统计,维度选项最多的结果,输出结果:为该类型的学习风格

example:(答案带标签)

  1. 你需要学习一项新技能,你会: a) 通过实际操作和试错来学习:体验维度 b) 阅读和研究相关资料:观察维度 c) 寻找相关理论和模型:理论维度 d) 观察和模仿他人的技能表现:实验维度

  2. 你的上司给你分配了一个新项目,你会: a) 马上行动并找出解决方案:体验维度 b) 仔细思考并制定计划:观察维度 c) 寻找和研究相关理论和模型:理论维度 d) 与他人交流和讨论不同的观点:实验维度

  3. 你遇到了一个复杂的问题,你会: a) 尝试不同的方法和策略:体验维度 b) 分析和整理相关信息:观察维度 c) 探索和研究相关理论和模型:理论维度 d) 观察和感知问题的各个方面:实验维度

  4. 你需要学习一本新的技术手册,你会: a) 通过实际操作和试错来学习:体验维度 b) 通过阅读和研究来学习:观察维度 c) 分析和理解相关理论和模型:理论维度 d) 观察和感知周围环境的变化:实验维度

  5. 你需要解决一个团队内部的问题,你会: a) 与他人合作和讨论:体验维度 b) 独自思考和独立决策:观察维度 c) 寻找和研究相关理论和模型:理论维度 d) 尝试不同的方法和策略:实验维度

  6. 你需要处理一个紧急事件,你会: a) 马上行动并找出解决方案:体验维度 b) 仔细思考并制定计划:观察维度 c) 寻找和研究相关理论和模型:理论维度 d) 观察和感知周围环境的变化:实验维度

  7. 你需要学习一门新的语言,你会: a) 通过实际操作和实践来学习:体验维度 b) 通过阅读和研究来学习:观察维度 c) 分析和理解相关理论和模型:理论维度 d) 观察和模仿他人的语言表现:实验维度

  8. 你需要解决一个复杂的技术问题,你会: a) 尝试不同的方法和策略:体验维度 b) 分析和整理相关信息:观察维度 c) 探索和研究相关理论和模型:理论维度 d) 观察和感知问题的各个方面:实验维度

  9. 你需要在一个新的领域中学习,你会: a) 通过实践和亲身经验来学习:体验维度 b) 通过阅读和研究来学习:观察维度 c) 分析和理解相关理论和模型:理论维度 d) 观察和感知周围环境的变化:实验维度

  10. 你需要处理一个复杂的人际关系问题,你会: a) 与他人合作和讨论:体验维度 b) 独立思考和自主决策:观察维度 c) 寻找和研究相关理论和模型:理论维度 d) 尝试不同的方法和策略:实验维度

代码实现:(用mbti python实现版本改的,作者:揉碎与重铸

def function (j):
    global a1, a2, a3, a4
    print(j, ".", problem[j -1], "\n", choose[j -1], "\n")
    xuanze = input("请输入选项(输完请按回车):")
    print("输入结果:", xuanze)
    # if j == 4 or j == 8 or j == 14 or j == 19 or j == 23 or j == 34 or j == 62 or j == 67 or j == 77:  # A/B/C/D means diff dimensions)
    if xuanze == 'A':
        a1 += 1
    elif xuanze == 'B':
        a2 += 1
    elif xuanze == 'C':
        a3 += 1
    elif xuanze == 'D':
        a4 += 1
    else:
        print("输入错误,请确定自己是否输入大写字母A/B/C/D,请重做此题\n")
        function(j)   
# 定义问题和选项
problem = ("你需要学习一项新技能,你会",
           "你的上司给你分配了一个新项目,你会",
           "你遇到了一个复杂的问题,你会",
           "你需要学习一本新的技术手册,你会",
           "你需要解决一个团队内部的问题,你会",
           "你需要处理一个紧急事件,你会",
           "你需要学习一门新的语言,你会",
           "你需要解决一个复杂的技术问题,你会",
           "你需要在一个新的领域中学习,你会",
           "你需要处理一个复杂的人际关系问题,你会")
choose = ("A. 通过实际操作和试错来学习 B. 阅读和研究相关资料 C. 寻找相关理论和模型 D. 观察和模仿他人的技能表现",
          "A. 马上行动并找出解决方案 B. 仔细思考并制定计划 C. 寻找和研究相关理论和模型 D. 与他人交流和讨论不同的观点",
          "A. 尝试不同的方法和策略 B. 分析和整理相关信息 C. 探索和研究相关理论和模型 D. 观察和感知问题的各个方面",
          "A. 通过实际操作和试错来学习 B. 通过阅读和研究来学习 C. 分析和理解相关理论和模型 D. 观察和感知周围环境的变化",
          "A. 与他人合作和讨论 B. 独自思考和独立决策 C. 寻找和研究相关理论和模型 D. 尝试不同的方法和策略",
          "A. 马上行动并找出解决方案 B. 仔细思考并制定计划 C. 寻找和研究相关理论和模型 D. 观察和感知周围环境的变化",
          "A. 通过实际操作和实践来学习 B. 通过阅读和研究来学习 C. 分析和理解相关理论和模型 D. 观察和模仿他人的语言表现",
          "A. 尝试不同的方法和策略 B. 分析和整理相关信息 C. 探索和研究相关理论和模型 D. 观察和感知问题的各个方面",
          "A. 通过实践和亲身经验来学习 B. 通过阅读和研究来学习 C. 分析和理解相关理论和模型 D. 观察和感知周围环境的变化",
          "A. 与他人合作和讨论 B. 独立思考和自主决策 C. 寻找和研究相关理论和模型 D. 尝试不同的方法和策略")
# 初始化变量
a1 = 0
a2 = 0
a3 = 0
a4 = 0
print("KOLB学习风格测试题\n1、参加测试的人员请务必诚实、独立地回答问题,只有如此,才能得到有效的结果。")
print("2、KOLB学习风格分类是由美国教育心理学家大卫·科尔布(David A. Kolb)提出的,它是一种理论框架,用于描述人们如何通过不同的方式学习。")
print("3、人们的学习风格可以分为四种主要类型,每种类型都与特定的学习偏好和行为模式相关\
人们可以通过了解和识别自己的学习风格,选择更适合自己的学习方法,从而提高学习效率和效果。")
print("4、本测试共10题;需时约1分钟。所有题目没有对错之分,请根据自己的实际情况选择。")
print("5、请输入大写字母A、B、C、D,不要输入其他字符,以方便统计。")
# 循环执行问题
for j in range(1, 10):
    function(j)
print("你的学习风格是:")
maximum = max(a1, a2, a3, a4)
if a1 == maximum:
    print("实践型学习风格(Concrete Experience),你倾向于通过实际操作和亲身体验来学习,喜欢尝试不同的方法和策略。")
elif a2 == maximum:
    print("观察型学习风格(Reflective Observation),你倾向于通过观察和感知周围环境来学习,喜欢收集和整理相关信息。")
elif a3 == maximum:
    print("理论型学习风格(Abstract Conceptualization),你倾向于通过寻找和研究相关理论和模型来学习,喜欢分析和理解概念。")
elif a4 == maximum:
    print("分析型学习风格(Active Experimentation),倾向于通过与他人合作和讨论来学习,喜欢与他人交流不同的观点。")

第二个实现思路:

每个问题一共有四个选项,每个选项代表一个维度,需要答题者进行打分操作,1到4分,最符合自己的打4分,最不符合的打1分。注意需要验证是否有重复赋值或超出打分范围的情况,最后通过两个维度相减得出x,y坐标,根据风格类型象限图确定风格类型。题没有找全,但是分类的象限值都是对的。

代码1:有一个问题就是一个一个赋分太麻烦了,而且不够清晰

questions = [
    {"问题": "问题1:当我学习的时候", "选项": ["A.我喜欢加入自己的感受", "B.我喜欢观察与聆听", "C.我喜欢针对观念进行思考", "D.我喜欢实际操作"]},
    {"问题": "问题2:我学得最好的时候,是当我", "选项": ["A.我相信我的直觉与感受时", "B.仔细聆听与观察时", "C.依赖逻辑思考时", "D.我努力完成实际操作时"]},
    {"问题": "问题3:当我学习时", "选项": ["A.我有强烈的感觉及反应", "B.我是安静的、谨慎的", "C.我是试着将事情想通", "D.我负责所有实际操作"]},
    {"问题": "问题4:我学习是利用", "选项": ["A.感觉", "B.观察", "C.思考", "D.实际操作"]},
    {"问题": "问题5:当我学习时,", "选项": ["A.我能接受新的经验", "B.我会从各个层面来思考问题", "C.我喜欢分析事情,并将其分解成几个部分来讨论", "D.我喜欢试着实际动手做"]},
]

answers = {}
for question in questions:
    print("以下4个选项,请选择最符合你的一项打4分,比较像你的打3分,不太像你的打2分,最不像你的打1分")
    print(question["问题"], question["选项"])
    options = question["选项"]
    option_order = sorted(options)  # 对选项进行排序
    question_answers = {}
    for option in option_order:
        while True:
            try:
                order = option_order.index(option) + 1  # 计算选项在排序后的位置
                answer = int(input(f"请对选项 {option} 进行打分({order}/4):"))
                if answer < 1 or answer > 4:
                    raise ValueError
                if answer in question_answers.values():
                    raise ValueError("打分不能重复")
                question_answers[option] = answer
                break
            except ValueError:
                print("请输入有效的选项打分!")
    answers[question["问题"]] = question_answers


# 初始化四个变量用于存储累加得分,a1=CE,a2=RO, a3= AC, a4=AE
a1, a2, a3, a4 = 0, 0, 0, 0

# 遍历answers字典中的每个问题
for question, answers_dict in answers.items():
    # 遍历每个问题的答案字典中的每个选项
    for option, score in answers_dict.items():
        # 根据选项名称中的序号进行累加得分
        if 'A' in option:
            a1 += score
        elif 'B' in option:
            a2 += score
        elif 'C' in option:
            a3 += score
        elif 'D' in option:
            a4 += score

x,y = 0, 0
x = a4 - a2
y = a3 - a1

import time
print("你的学习风格是:")
time.sleep(1)  # 延迟一秒,以便用户有时间阅读上一条消息

if x >= 6 and x <= 28 and y <= 6 and y >= -18:
     print("适应型:\n"
           "喜欢实际计划或任务,以获得新的经验,较喜欢冒险,容易适应新环境,不需要架构或权威,偏好互动学习的方式") 
if x >= 6 and x <= 28 and y <= 30 and y >= 7:
     print("聚合型:\n"
           "喜好主动实验与抽象概念,擅长问题的解决,藉由假设和演绎推论的方式来获得知识,相信单一答案、普遍知识及实际的价值,故重视专家式的学习及结构好的知识。") 
if x >= -21 and x <= 5 and y <= 6 and y >= -18:
     print("分散型:\n"
            "喜好省思观察与具体经验,有较强的想像力和创意,擅长脑力激荡,由于多观察少行动,须以图像或整体观念来帮助学习,喜欢开放式的作业及自我判断的活动,不喜欢同侪互动学习。") 
if x >= -21 and x <= 5 and y <= 30 and y >= 7:
     print("同化型:\n"
           "喜好省思观察与抽象概念,具有归纳推理而建立理论架构的能力,能够同化完全不同的发现,而提出一个完整的解释,偏好确定方向的学习,但较缺少对人事物实际的价值判断。\n")      

input("学习风格测试完成,按任意键退出")     

代码2:定义了函数,代码清晰点;解决了一个一个赋值的问题,答题者可以用空格来区隔每个选项分值,最后会赋值到字典里。

def get_answers(question):
    print("以下4个选项,请选择最符合你的一项打4分,比较像你的打3分,不太像你的打2分,最不像你的打1分\n")
    print(question["问题"], "\n", question["选项"])
    options = question["选项"]
    option_order = sorted(options)  # 对选项进行排序
    question_answers = {}
    while len(question_answers) < 4:
        try:
            answer_scores = list(map(int, input("请输入对四个选项(按照顺序)的打分,中间用空格隔开:").split()))
            if len(answer_scores) != 4:
                raise ValueError("请为每个选项都打分!")
            if len(answer_scores) != len(set(answer_scores)):
                raise ValueError("打分不能重复!")
            for score in answer_scores:
                if score < 1 or score > 4:
                    raise ValueError("分数范围应在1到4之间!")
            for i in range(4):
                question_answers[option_order[i]] = answer_scores[i]
        except ValueError as ve:
            print(ve)
            continue
    return question_answers

questions = [
    {"问题": "问题1:当我学习的时候", "选项": ["A.我喜欢加入自己的感受", "B.我喜欢观察与聆听", "C.我喜欢针对观念进行思考", "D.我喜欢实际操作"]},
    {"问题": "问题2:我学得最好的时候,是当我", "选项": ["A.我相信我的直觉与感受时", "B.仔细聆听与观察时", "C.依赖逻辑思考时", "D.我努力完成实际操作时"]},
    {"问题": "问题3:当我学习时", "选项": ["A.我有强烈的感觉及反应", "B.我是安静的、谨慎的", "C.我是试着将事情想通", "D.我负责所有实际操作"]},
    {"问题": "问题4:我学习是利用", "选项": ["A.感觉", "B.观察", "C.思考", "D.实际操作"]},
    {"问题": "问题5:当我学习时,", "选项": ["A.我能接受新的经验", "B.我会从各个层面来思考问题", "C.我喜欢分析事情,并将其分解成几个部分来讨论", "D.我喜欢试着实际动手做"]},
]
answers = {}
for question in questions:
    answers[question["问题"]] = get_answers(question)


# 初始化四个变量用于存储累加得分,a1=CE,a2=RO, a3= AC, a4=AE
a1, a2, a3, a4 = 0, 0, 0, 0

# 遍历answers字典中的每个问题
for question, answers_dict in answers.items():
    # 遍历每个问题的答案字典中的每个选项
    for option, score in answers_dict.items():
        # 根据选项名称中的序号进行累加得分
        if 'A' in option:
            a1 += score
        elif 'B' in option:
            a2 += score
        elif 'C' in option:
            a3 += score
        elif 'D' in option:
            a4 += score

x,y = 0, 0
x = a4 - a2
y = a3 - a1

import time
print("你的学习风格是:")
time.sleep(1)  # 延迟一秒,以便用户有时间阅读上一条消息

if x >= 6 and x <= 28 and y <= 6 and y >= -18:
     print("适应型:\n"
           "喜欢实际计划或任务,以获得新的经验,较喜欢冒险,容易适应新环境,不需要架构或权威,偏好互动学习的方式") 
if x >= 6 and x <= 28 and y <= 30 and y >= 7:
     print("聚合型:\n"
           "喜好主动实验与抽象概念,擅长问题的解决,藉由假设和演绎推论的方式来获得知识,相信单一答案、普遍知识及实际的价值,故重视专家式的学习及结构好的知识。") 
if x >= -21 and x <= 5 and y <= 6 and y >= -18:
     print("分散型:\n"
            "喜好省思观察与具体经验,有较强的想像力和创意,擅长脑力激荡,由于多观察少行动,须以图像或整体观念来帮助学习,喜欢开放式的作业及自我判断的活动,不喜欢同侪互动学习。") 
if x >= -21 and x <= 5 and y <= 30 and y >= 7:
     print("同化型:\n"
           "喜好省思观察与抽象概念,具有归纳推理而建立理论架构的能力,能够同化完全不同的发现,而提出一个完整的解释,偏好确定方向的学习,但较缺少对人事物实际的价值判断。\n")      

input("学习风格测试完成,按回车退出")  

封装成.exe的应用程序时容易直接退出,所以加一行input,这样能看到运行到哪步

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值