程序员的自我救赎,使用Python开发性格分析工具

python-霍兰德人格分析 #HollandRadarDraw import numpy as np import matplotlib.pyplot as plt import matplotlib matplotlib.rcParams['font.family']='SimHei' radar_labels = np.array(['研究型(I)','艺术型(A)','社会型(S)',\ ... 阅读详情

帕累托法则

上世纪初,意大利经济学家维尔弗雷多▪帕累托发现了一个有趣的现象:
在意大利, 大约80%的财富掌握在大约20%的人手中,这在后来被概括为帕累托法则(80/20法则),即二八法则。
而全球财富报告称,中国最富有的那10%的人,拥有中国64%的财富。

如此不均衡的贫富差距,各行业的领导者如何能管理好公司,让员工们即努力产出,又能安于现状呢?每个领导者必学的一门课程就是职场心理学。只有你充分了解员工心理与对应的行为表现,才能从容的掌控各类型的人员,从而达到“物尽其用”。

那么职场心理学到底学习什么?

九型人格

九型人格是一个近年来倍受国际著名大学MBA学员推崇的课程之一,近十几年来已风行欧美学术界及工商界。
全球500强企业的管理阶层均有研习九型性格,并以此培训员工,建立团队,提高执行力。在当代,它对于企业的前期规划、战略确定、教练指导、企业培训等方面,九型人格有很大的优势。
九型人格不仅仅是一种精妙的性格分析工具,更主要的是为个人修养、自我提升和历练提供更深入的洞察力。

俗话说:“龙生九子,子子不同”。通过九型人格的性格分析工具,将性格心理与行为划分为九类。再对不同性格的人群进行研究分析,找到每一类人最适合岗位与职责。这就是领导者们运筹于帷幄之中,决胜于千里之外的筹码。

人为刀俎,我为鱼肉。不想受制于领导者们的掌控,首先要了解自身的人格分类,才能完善自己的不足。这该如何下手?作为程序员,让我们用代码完成自我的救赎吧!

代码改变世界

刚刚过去的华为HR事件,给我印象最深的不是各阶层的矛盾,而是那位HR说的一句话:

在每位开发的心中,都曾有着一个代码改变世界的愿望!

那么今天,我们就用Python开发一套九型人格性格分析工具。用以让更多的人,了解自己的性格分类!

既然是九型人格分析,首先我们需要拿到它的测试题。翻了很久,知道了百度文库的测试原题:
https://wenku.baidu.com/view/19455024dd36a32d72758105.html

测试题总共36道,通过各场景下的行为表现,最终分析出你最接近的人格分类。现在题有了,如何做出测试题呢?我选择使用Python的tkinter模块,将测试题开发为一个可执行的exe工具,说干就干!

基础准备

为了能将代码打包成单独的可执行文件,我们需要先准备测试题与对应的答案,然后提前存储在代码中。我们需要进行相关拆分,这种苦力活就交给拥有雷锋精神的我来完成吧:

界面开发

界面无需太过复杂,提供说明、题目、选项作答、题目切换与操作按钮即可。当然,交卷后,需要显示用户的测试结果,那么开始吧!

30 minutes later…完成!

Main.py

 1from Enneagram_GUI import *
 2from tkinter import *
 3
 4
 5def center_window(root, width, height):
 6    screenwidth = root.winfo_screenwidth()
 7    screenheight = root.winfo_screenheight()
 8    size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
 9    root.geometry(size)
10
11
12root = Tk()
13
14center_window(root, 750, 700)
15
16root.resizable(width=False, height=False)
17root.title('九型人格测试 | 公众号: 清风Python')
18ExamPage(root)
19root.mainloop()

Enneagram_GUI.py

  1# -*- coding: utf-8 -*-
  2# @Author   : 王翔
  3# @微信号   : King_Uranus
  4# @公众号    : 清风Python
  5# @GitHub   : https://github.com/BreezePython
  6# @Date     : 2019/11/12 23:12
  7# @Software : PyCharm
  8# @version  :Python 3.7.3
  9# @File     : Enneagram_GUI.py
 10
 11
 12# coding:utf-8
 13from tkinter import *
 14import Enneagram_Exam
 15import Enneagram_Result
 16import tkinter.messagebox
 17
 18# 自测说明
 19Standard = '此份问卷共有36道测试题目,请在每题中选择你认为最恰当或者最接近描述自己的性格行为的句子,\n' \
 20           '请全部作答,最高分的项目很可能成为你的基本性格型态。'
 21
 22# 人格类型矩阵
 23Style_Dict = [
 24    {3: 2, 6: 2, 10: 2, 15: 2, 19: 1, 22: 2, 28: 2, 32: 2},
 25    {1: 1, 6: 1, 12: 1, 17: 2, 20: 1, 23: 1, 29: 1, 33: 1},
 26    {4: 1, 7: 1, 10: 1, 14: 2, 23: 2, 26: 2, 30: 1, 34: 1},
 27    {2: 1, 8: 2, 12: 2, 16: 1, 21: 2, 24: 1, 28: 1, 34: 2},
 28    {1: 2, 4: 2, 13: 1, 16: 2, 19: 2, 25: 1, 31: 1, 36: 1},
 29    {5: 1, 9: 2, 14: 1, 18: 1, 21: 1, 25: 2, 29: 2, 32: 1},
 30    {2: 2, 7: 2, 11: 2, 18: 2, 22: 1, 27: 2, 33: 2, 36: 2},
 31    {3: 1, 9: 1, 13: 2, 17: 1, 24: 2, 27: 1, 20: 2, 35: 2}
 32]
 33
 34
 35class ExamPage:
 36    def __init__(self, master=None):
 37        self.root = master
 38        # 用户结果集
 39        self.user_result = {}
 40        self.status = 1
 41        self.All_Exam = Enneagram_Exam
 42        self.normal_choice = IntVar()
 43        self.start_exam()
 44
 45    # 上一题方法
 46    def before(self):
 47        if self.normal_choice.get() != 0:
 48            self.user_result[self.status] = self.normal_choice.get()
 49            if self.status > 1:
 50                self.status -= 1
 51                self.body.grid_forget()
 52                self.main_exam()
 53        else:
 54            tkinter.messagebox.showwarning("提示:", message="请先选择答案!")
 55
 56    # 下一题方法
 57    def after(self):
 58        if self.normal_choice.get() != 0:
 59            self.user_result[self.status] = self.normal_choice.get()
 60            if self.status < len(Enneagram_Exam.Exam):
 61                self.status += 1
 62                self.body.grid_forget()
 63                self.main_exam()
 64        else:
 65            tkinter.messagebox.showwarning("提示:", message="请先选择答案!")
 66
 67    # 获取当前题目
 68    def exam_files(self, num):
 69        return list(map(lambda x: x.split('.'), self.All_Exam.Exam[num - 1].strip().split('\n')))
 70
 71    # 交卷
 72    def hand_paper(self):
 73        self.user_result[self.status] = self.normal_choice.get()
 74        if len(self.user_result) != 36:
 75            tkinter.messagebox.showwarning("提示:", message="您还有未完成的测试题!")
 76        else:
 77            self.exam_result = LabelFrame(self.root, text="测试结果", padx=10, pady=10, fg="red", font=("黑体", '11'))
 78            self.exam_result.grid(padx=10, pady=5, sticky=NSEW)
 79            sc = Scrollbar(self.exam_result)
 80            sc.grid(row=0, column=1, sticky=NS)
 81            result_info = Text(self.exam_result, font=("黑体", '11'), width=85, yscrollcommand=sc.set)
 82            result_info.grid(row=0, column=0, sticky=NSEW)
 83            sc.config(command=result_info.yview)
 84            all_num = []
 85            for style in Style_Dict:
 86                calc_num = list(
 87                    point for point in self.user_result if point in style and self.user_result[point] == style[point])
 88                if calc_num == None:
 89                    all_num.append(0)
 90                else:
 91                    all_num.append(len(calc_num))
 92            user_type = all_num.index(max(all_num))
 93            for line in Enneagram_Result.Result[user_type]:
 94                result_info.insert(END, line)
 95
 96    # 启动测试所需控制按钮
 97    def start_exam(self):
 98        self.title = LabelFrame(self.root, text="自测说明", padx=10, pady=10, fg="red", font=("黑体", '11'))
 99        self.title.grid(padx=10, pady=5)
100        note = Label(self.title, text=Standard, justify=LEFT, font=("黑体", '11'))
101        note.grid()
102        self.show = LabelFrame(self.root, text="选项", padx=10, pady=10, fg="red", font=("黑体", '11'))
103        self.show.grid(padx=10, pady=5, sticky=EW)
104        go_back = Button(self.show, text="上一题", width=8, command=lambda: self.before())
105        go_back.grid(row=4, column=0, padx=5, pady=10)
106        to_forword = Button(self.show, text="下一题", width=8, command=lambda: self.after())
107        to_forword.grid(row=4, column=1, padx=5, pady=10, sticky=E)
108        hand_in = Button(self.show, text="交卷", width=8, command=lambda: self.hand_paper())
109        hand_in.grid(row=4, column=2, padx=5, pady=10, sticky=E)
110        exit_sys = Button(self.show, text="退出", width=8, command=lambda: sys.exit())
111        exit_sys.grid(row=4, column=3, padx=5, pady=10, sticky=E)
112        self.main_exam()
113
114    # 测试题主界面
115    def main_exam(self):
116        self.normal_choice.set(0)
117        self.body = LabelFrame(self.root,
118                               text="测试题  第%s题,剩余%s题" % (self.status, (len(Enneagram_Exam.Exam) - self.status)),
119                               padx=10, pady=10, fg="red", font=("黑体", '11'))
120        self.body.grid(padx=10, pady=5, sticky=EW)
121        for option, choice in self.exam_files(self.status):
122            authority_choice = Radiobutton(self.body, text=choice, variable=self.normal_choice, value=option)
123            authority_choice.grid(row=option, sticky=W)
124        Label(self.body, text="  第%s道题,用户选择的结果是:" % self.status, fg="red", font=("黑体", '11')).grid(row=3, column=0,
125                                                                                                   sticky=W)
126        Label(self.body, textvariable=self.normal_choice).grid(row=3, column=0, sticky=E)

剩余的练习题与答案代码,就不在这里赘述了。

对于一位程序员的审美,大家要求别太高,重点来关注下功能实现吧!当然在此之前我们需要先将代码打包为exe工具,大小8MB。

功能OK了,现在不要打扰我,我要做题了!

我的答案是完美型,处女座总是在追求完美的路上跟自己死磕,哎…活得好累。

需要源码后台回复:【性格测试,记得自测完后,告诉我你的所属的类型哦!


近期热门:

还在做重复的劳动,不如用Python自动生成Excel以邮件发送

独家秘籍,50行代码教你买哪只黄金股

简单几步,100行代码用Python画一个蝙蝠侠的logo

N年Python老司机,血泪总结新手常见10大错误

学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃!

点击阅读原文,原创400篇干货文章

Python简单预测模型 在数据科学和机器学习中,预测模型是一种重要的工具,用于根据历史数据推断未来的趋势和结果。Python是一种功能强大的编程语言,提供了许多库和工具,使我们能够轻松地构建和部署预测模型。本文将介绍如何使用Python构建一个简单的预测模型,并提供相应的源代码。在本文中,我们介绍了如何使用NumPy和Scikit-learn库构建一个简单的预测模型,并给出了相应的源代码。在这个例子中,我们将使用一个简单的数据集,其中包含了房屋的面积和价格。在实际应用中,我们通常会使用更复杂的模型和更多的特征来进行预测。 阅读详情

相关推荐

九型人格是什么?

(Enneagram/Ninehouse)是一个有2000多年历史的古老学问,它按照人们习惯性的思维模式,情绪反应和行为习惯等性格特质,将人的性格分为九种,又被称为九柱图,起源于中亚西亚地区,和中国的八卦图有点像,近代的九型是由六十年代智利的一位心理学家Oscar Ichazo所创,主要是指九种人类的性格特征,分别是完美型,全爱型,成就型,艺术型,智慧型,忠诚型,活跃型,领袖型和和平型。老师要你学的,你偏扮傻……但要注意,作为你的朋友,要承受你的嬲怒情绪,的确不是容易,也会造成压力,所以要多加注意啊。

沧海之巅的专栏 1356

针对Python的代码静态分析工具PySonar.zip

PySonar2 是王垠开发的,针对 Python 的代码静态分析工具,现在这项技术被著名的代码搜索引擎  Sourcegraph 使用,这是 PySonar 的第二个版本,第一个版本的使用者是 Google 内部,作为 Python 上百万行高质量语义代码索引。 更多特性说明请看作者博客: http://yinwang0.wordpress.com/2010/09/12/pysonar 构建 mvn package 使用 PySonar2 主要是作为 Python IDEs ,其他开发工具和代码搜索引擎的一个库,所以接口并不像终端应用。构建简单的,基于 Python 2.7 标准库的 "code-browser": java -jar target/pysonar-2.0-SNAPSHOT.jar /usr/lib/python2.7 ./html 系统要求 Python 2.7.x Python 3.x if you have Python3 files Java 7 maven 标签:PySonar

人格测试的python代码实现通过代码测试你的人格魅力

人格测试的python程序,just for fun,有兴趣的可以下下来玩一下

程序员自我救赎使用python开发性格分析工具

自我救赎 帕累托法则 上世纪初,意大利经济学家维尔弗雷多▪帕累托发现了一个有趣的现象: 在意大利, 大约80%的财富掌握在大约20%的人手中,这在后来被概括为帕累托法则(80/20法则),即二八法则。 而全球财富报告称,中国最富有的那10%的人,拥有中国64%的财富。 如此不均衡的贫富差距,各行业的领导者如何能管理好公司,让员工们即努力产出,又能安于现状呢?每个领导...

清风Python 560

python实现人格分析

很抱歉,我无法理解您的问题。您是想问如何使用 Python 进行人格分析吗?请注意,人格分析是一个复杂的问题,需要专业的心理学知识和技能才能正确进行。若您想尝试用 Python 实现人格分析,可以考虑使用已有的人格测试数据(例如李克特量表)和机器学习模型,但是这需要您具备一定的机器学习知识和技能。我建议您先学习相关的知识再尝试进行人格分析。 ...

weixin_42588672的博客 427

基于python的数据分析系统,python数据分析经典案例

大家好,本文将围绕利用python进行数据分析案例展开说明,基于python的数据分析系统是一个很多人都想弄明白的事情,想搞清楚基于python的数据分析题目需要先了解以下几个事情。

chatgpt002的博客 1659

九型人格----概述

一、什么是九型人格? 九型人格又名性格型态学。九种性格,是婴儿时期人身上的九种气质。它能帮助我们了解人类不同的个性与特质,探索人与人相处之道的学问。 解决什么问题: 1、是什么?(是什么性格类型的人) 2、为什么?(为什么这样做) 3、需要什么?(需要什么能更好) 4、如何调整自己能做得到 5、我为什么要这样做 用于改变自己,去影响别人 注意: 每个人只对应一种人格 从心态上分类 每个人关注的事...

李笑男的博客 7928

九型人格测试题.144题.excel版可直接得出结果.xls

九型人格测试题 144题 excel版 可直接得出结果

易语言源码易语言性格色彩测试软件源码.rar

易语言源码易语言性格色彩测试软件源码.rar 易语言源码易语言性格色彩测试软件源码.rar 易语言源码易语言性格色彩测试软件源码.rar 易语言源码易语言性格色彩测试软件源码.rar 易语言源码易语言性格色彩测试软件源码.rar 易语言源码易语言性格色彩测试软件源码.rar易语言源码易语言性格色彩测试软件源码.rar 易语言源码易语言性格色彩测试软件源码.rar

python开发自己的攻击工具_程序员自我救赎使用Python开发性格分析工具

如此不均衡的贫富差距,各行业的领导者如何能管理好公司,让员工们既努力产出,又能安于现状呢?每个领导者必学的一门课程就是职场心理学。只有你充分了解员工心理与对应的行为表现,才能从容的掌控各类型的人员,从而达到“物尽其用”。那么职场心理学到底学习什么?九型人格九型人格是一个近年来倍受国际著名大学MBA学员推崇的课程之一,近十几年来已风行欧美学术界及工商界。全球500强企业的管理阶层均有研习九型性格,并...

weixin_28759537的博客 182

程序员自我救赎使用python开发性格分析工具(1)

from Enneagram_GUI import *from tkinter import *def center_window(root, width, height):screenwidth = root.winfo_screenwidth()screenheight = root.winfo_screenheight()size = ‘%dx%d+%d+%d’ % (width, height, (screenwidth - width) / 2, (screenheight - height) /

2401_83642079的博客 1069

教你用python开发一个性格分析工具

俗话说:“龙生九子,子子不同”。通过九型人格的性格分析工具,将性格心理与行为划分为九类。再对不同性格的人群进行研究分析,找到每一类人最适合岗位与职责。这就是领导者们运筹与帷幄之中,决胜于千里之外的筹码。 人为刀俎,我为鱼肉。不想受制于领导者们的掌控,首先要了解自身的人格分类,才能完善自己的不足。这该如何下手?作为程序员,让我们用代码完成自我救赎吧! 大家可以通过下面测试初步了解下自己是什么性格类型: https://wenku.baidu.com/view/19455024dd36a32d727..

boss_python的博客 1568
上一篇: 爬取300本Python书籍,用Python告诉你哪家强?
下一篇: 只要三步,用Python轻松制作短视频,你也能在朋友圈傲娇一把!
菜鸟学Python
博客等级 码龄9年 7561粉丝 571原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值