FFPQテスト

日本人向けに作られたビッグファイブテストの定番である「FFPQ」を紙で集計するのはめんどくさいので
自分で作りました。
結構精度高いみたいなので自己分析したい方はやってみてね。


```Python
def get_valid_input(question):
        while True:
            try:
                print(question)  # 質問をプリントしてからユーザーの入力を求める
                user_input = input("1 全くちがう, 2 ちがう, 3 どちらともいえない, 4 そうだ, 5 全くそうだ: \n")
                user_input = int(user_input)
              # 入力値が1から5の範囲内であるかをチェックする
                if 1 <= user_input <= 5:
                    return user_input
                else:
                    print("入力は1から5の数字である必要があります。")
            except ValueError:
            # 入力が整数に変換できない場合に表示されるエラーメッセージ
                print("無効な入力です。数字の1から5を入力してください。")
def question1(hashMap,list):
    for question, category in list:
        input_prompt = question + "\n当てはまる数字を入れて下さい  "
        answer = get_valid_input(input_prompt)
        category = category.strip('()')  # カテゴリー名から括弧を取り除く
        hashMap[category] += answer
    return hashMap



em =[['憂鬱になりやすい', '(Em3)'],
 ['自分がみじめな人間に思える', '(Em4)'],
 ['ものごとがうまく行かないのではないかと，よく心配する', '(Em1)'],
 ['小さなことでくよくよする', '(Em1)'],
 ['見捨てられた感じがする', '(Em3)'],
 ['自分には全然価値がないように思えることがある', '(Em4)'],
 ['陽気になったり陰気になったり，気分が変りやすい', '(Em5)'],
 ['よく緊張する','(Em2)'],
 ['明るいときと暗いときの気分の差が大きい', '(Em5)'],
 ['緊張してふるえるようなことはない', '(Em2)']]

ex = [['大勢でわいわい騒ぐのが好きである', '(Ex3)'],
 ['目立つタイプである' ,'(Ex5)'],
 ['にぎやかな所が好きである', '(Ex4)'],
 ['大勢の人の中にいるのが好きである', '(Ex3)'],
 ['もの静かでではない' ,'(Ex1)'],
 ['人の上に立つことが多い', '(Ex2)'],
 ['人に指示を与えるような立場に立つことが多い', '(Ex2)'],
 ['じっとしているのが嫌いである', '(Ex1)'],
 ['人から注目されるとうれしい', '(Ex5)'],
 ['スポーツ観戦で我を忘れて応援することがある', '(Ex4)']]

c = [['自分はきっちりとした人間である' ,'(C1)'],
 ['仕事を投げやりにしてしまうことがない' ,'(C3)'],
 ['よく考えてから行動する', '(C5)'],
 ['仕事は計画的にするようにしている', '(C5)'],
 ['責任感が乏しいといわれることがない' ,'(C3)'],
 ['まじめな努力家である', '(C2)'],
 ['根気が続くほうである ','(C2)'],
 ['几帳面である', '(C1)'],
 ['たいへんなことでもやる気を失わない','(C4)'],
 ['欲望のままに行動してしまうようなことは，ほとんどない', '(C4)']]

a = [['誰に対しても優しく親切にふるまうようにしている', '(A5)'],
 ['人には暖かく友好的に接している', '(A1)'],
 ['人の気持ちを積極的に理解しようとは思う' ,'(A4)'],
 ['けっこう親切な人間である' ,'(A1)'],
 ['人情深いほうだと思う', '(A2)'],
 ['人のよろこびを自分のことのように喜べる', '(A4)'],
 ['どうしても好きになれない人がたくさんいはいない' ,'(A3)'],
 ['出会った人はたいがい好きになる', '(A3)'],
 ['気配りをするほうである', '(A2)'],
 ['人を馬鹿にしているといわれることがない', '(A5)']]


p = [['芸術作品に接すると鳥肌がたち興奮をおぼえることがある', '(P3)'],
 ['美や芸術にはけっこう関心がある', '(P3)'],
 ['考えることは面白い', '(P1)'],
 ['イメージがあふれ出てくる', '(P2)'],
 ['自分の感じたことを大切にする', '(P4)'],
 ['変わった人だとよくいわれる', '(P5)'],
 ['空想の世界をさまようことがけっこうある ','(P2)'],
 ['好奇心が強い', '(P1)'],
 ['感情豊かな人間である', '(P4)'],
 ['別世界に行ってみたい', '(P5)']]


hashMapEM = {'Em1':0,'Em2':0,'Em3':0,'Em4':0,'Em5':0}
hashMapEX = {'Ex1':0,'Ex2':0,'Ex3':0,'Ex4':0,'Ex5':0}
hashMapC = {'C1':0,'C2':0,'C3':0,'C4':0,'C5':0}
hashMapA = {'A1':0,'A2':0,'A3':0,'A4':0,'A5':0}
hashMapP = {'P1':0,'P2':0,'P3':0,'P4':0,'P5':0}

hashMapEM = question1(hashMapEM, em)
hashMapEX = question1(hashMapEX, ex)
hashMapC = question1(hashMapC, c)
hashMapA = question1(hashMapA, a)
hashMapP = question1(hashMapP, p)

emMax= max(hashMapEM, key=hashMapEM.get)
exMax= max(hashMapEX, key=hashMapEX.get)
cMax= max(hashMapC, key=hashMapC.get)
aMax= max(hashMapA, key=hashMapA.get)
pMax= max(hashMapP, key=hashMapP.get)

hashMapEMResult ={
 'Em1': '心配性：将来のことに対して不安にならないし、細かいことに心配にならない。',
 'Em2': '緊張：感情がたかぶって頭が白くなったり、体が震えてパフォーマンスが下がるタイプ。',
 'Em3': '抑うつ：孤独に弱く、誰かから冷たくされるとすぐ憂鬱になってしまうタイプ。',
 'Em4': '自己批判：脳内に自分へのネガティブな思考がうずまきやすいタイプ。',
 'Em5': '気分変動：すぐにポジティブになったかと思えば、すぐにネガティブになってしまうタイプ。'
}
hashMapEXResult = {
 'Ex1': '活動：じっとしているのが嫌いで、よくしゃべる。',
 'Ex2': '支配：他人を導いたり、コントロールするのが好き。',
 'Ex3': '群居：みんなでわいわいやるのが好きで、グループにいるほどエネルギーが増える。',
 'Ex4': '興奮追求：刺激が強い環境を好み、他人と戦うのも好き。',
 'Ex5': '注意獲得：他人に注目されたり、大勢のなかで目立つのが好き。'
}
hashMapCResult = {
 'C1': '几帳面：細かいところまでこだわり、何事にも丁寧にしっかり行う。',
 'C2': '執着：難しいものごとでも根気よく続けられるタイプ。',
 'C3': '責任感：約束は必ず守り、決めたことを途中で放り出さないタイプ。',
 'C4': '自己統制：衝動や欲望に流されずに、感情をコントロールするのがうまい。',
 'C5': '計画：綿密なプランを立てるのがうまい。'
}
hashMapAResult = {
 'A1': '温厚：他人に優しく接し、親切にしてやるのが好き。',
 'A2': '協調：周囲に誰かがいると、めちゃくちゃ気を使うタイプ。',
 'A3': '信頼：他人をすぐに信頼し、いろんなタイプの人を好きになれる。',
 'A4': '共感：他人の感情を簡単に理解し、相手の感情を自分のことのように感じられるタイプ。',
 'A5': '他者尊重：他人を見下さず、すべての人へ平等に接するのがうまい。'
}
hashMapPResult = {
 'P1': '進取：見知らぬものに飛びつき、いろいろと考えるのが好きなタイプ。',
 'P2': '空想：斬新なイメージを作り出すのが好きで、ずっと空想するのが好きなタイプ。',
 'P3': '芸術への関心：アートや美しいものが大好きで、畏敬の念を覚えやすいタイプ。',
 'P4': '内的経験への敏感：いろいろな感情を味わい、自分の感覚にすぐ気づくのが得意。',
 'P5': '奔放：自分が思ったことを自由にやるのが好きなタイプ。'
}
print("診断結果")
print("情動性: " + hashMapEMResult[emMax])
print("外向性: " + hashMapEXResult[exMax])
print("愛着性: " + hashMapAResult[aMax])
print("統制性: " + hashMapCResult[cMax])
print("遊戯性: " + hashMapPResult[pMax])
```