Try   HackMD

Python 專題 == MBTI

程式碼:

def istj(): print("IIIIIIIIII SSSSSSSSSS TTTTTTTTTT JJJJJJJJJJ") print(" II SS TT JJ ") print(" II SS TT JJ ") print(" II SSSSSSSSSS TT JJ ") print(" II SS TT JJ ") print(" II SS TT JJ JJ ") print("IIIIIIIIII SSSSSSSSSS TT JJJJJJ ") def istp(): print("IIIIIIIIII SSSSSSSSSS TTTTTTTTTT PPPPPPPPPP") print(" II SS TT PP PP") print(" II SS TT PP PP") print(" II SSSSSSSSSS TT PPPPPPPPPP") print(" II SS TT PP ") print(" II SS TT PP ") print("IIIIIIIIII SSSSSSSSSS TT PP ") def isfj(): print("IIIIIIIIII SSSSSSSSSS FFFFFFFFFF JJJJJJJJJJ") print(" II SS FF JJ ") print(" II SS FF JJ ") print(" II SSSSSSSSSS FFFFFF JJ ") print(" II SS FF JJ ") print(" II SS FF JJ JJ ") print("IIIIIIIIII SSSSSSSSSS FF JJJJJJ ") def isfp(): print("IIIIIIIIII SSSSSSSSSS FFFFFFFFFF PPPPPPPPPP") print(" II SS FF PP PP") print(" II SS FF PP PP") print(" II SSSSSSSSSS FFFFFF PPPPPPPPPP") print(" II SS FF PP ") print(" II SS FF PP ") print("IIIIIIIIII SSSSSSSSSS FF PP ") def intj(): print("IIIIIIIIII NN N TTTTTTTTTT JJJJJJJJJJ") print(" II N NN N TT JJ ") print(" II N NN N TT JJ ") print(" II N NN N TT JJ ") print(" II N NN N TT JJ ") print(" II N NN N TT JJ JJ ") print("IIIIIIIIII N NN TT JJJJJJ ") def intp(): print("IIIIIIIIII NN N TTTTTTTTTT PPPPPPPPPP") print(" II N NN N TT PP PP") print(" II N NN N TT PP PP") print(" II N NN N TT PPPPPPPPPP") print(" II N NN N TT PP ") print(" II N NN N TT PP ") print("IIIIIIIIII N NN TT PP ") def infj(): print("IIIIIIIIII NN N FFFFFFFFFF JJJJJJJJJJ") print(" II N NN N FF JJ ") print(" II N NN N FF JJ ") print(" II N NN N FFFFFF JJ ") print(" II N NN N FF JJ ") print(" II N NN N FF JJ JJ ") print("IIIIIIIIII N NN FF JJJJJJ ") def infp(): print("IIIIIIIIII NN N FFFFFFFFFF PPPPPPPPPP") print(" II N NN N FF PP PP") print(" II N NN N FF PP PP") print(" II N NN N FFFFFF PPPPPPPPPP") print(" II N NN N FF PP ") print(" II N NN N FF PP ") print("IIIIIIIIII N NN FF PP ") def estj(): print("EEEEEEEEEE SSSSSSSSSS TTTTTTTTTT JJJJJJJJJJ") print("EE SS TT JJ ") print("EE SS TT JJ ") print("EEEEEEEE SSSSSSSSSS TT JJ ") print("EE SS TT JJ ") print("EE SS TT JJ JJ ") print("EEEEEEEEEE SSSSSSSSSS TT JJJJJJ ") def estp(): print("EEEEEEEEEE SSSSSSSSSS TTTTTTTTTT PPPPPPPPPP") print("EE SS TT PP PP") print("EE SS TT PP PP") print("EEEEEEEE SSSSSSSSSS TT PPPPPPPPPP") print("EE SS TT PP ") print("EE SS TT PP ") print("EEEEEEEEEE SSSSSSSSSS TT PP ") def esfj(): print("EEEEEEEEEE SSSSSSSSSS FFFFFFFFFF JJJJJJJJJJ") print("EE SS FF JJ ") print("EE SS FF JJ ") print("EEEEEEEE SSSSSSSSSS FFFFFF JJ ") print("EE SS FF JJ ") print("EE SS FF JJ JJ ") print("EEEEEEEEEE SSSSSSSSSS FF JJJJJJ ") def esfp(): print("EEEEEEEEEE SSSSSSSSSS FFFFFFFFFF PPPPPPPPPP") print("EE SS FF PP PP") print("EE SS FF PP PP") print("EEEEEEEE SSSSSSSSSS FFFFFF PPPPPPPPPP") print("EE SS FF PP ") print("EE SS FF PP ") print("EEEEEEEEEE SSSSSSSSSS FF PP ") def entj(): print("EEEEEEEEEE NN N TTTTTTTTTT JJJJJJJJJJ") print("EE N NN N TT JJ ") print("EE N NN N TT JJ ") print("EEEEEEEE N NN N TT JJ ") print("EE N NN N TT JJ ") print("EE N NN N TT JJ JJ ") print("EEEEEEEEEE N NN TT JJJJJJ ") def entp(): print("EEEEEEEEEE NN N TTTTTTTTTT PPPPPPPPPP") print("EE N NN N TT PP PP") print("EE N NN N TT PP PP") print("EEEEEEEE N NN N TT PPPPPPPPPP") print("EE N NN N TT PP ") print("EE N NN N TT PP ") print("EEEEEEEEEE N NN TT PP ") def enfj(): print("EEEEEEEEEE NN N FFFFFFFFFF JJJJJJJJJJ") print("EE N NN N FF JJ ") print("EE N NN N FF JJ ") print("EEEEEEEE N NN N FFFFFF JJ ") print("EE N NN N FF JJ ") print("EE N NN N FF JJ JJ ") print("EEEEEEEEEE N NN FF JJJJJJ ") def enfp(): print("EEEEEEEEEE NN N FFFFFFFFFF PPPPPPPPPP") print("EE N NN N FF PP PP") print("EE N NN N FF PP PP") print("EEEEEEEE N NN N FFFFFF PPPPPPPPPP") print("EE N NN N FF PP ") print("EE N NN N FF PP ") print("EEEEEEEEEE N NN FF PP ") print("\t\t 這是一個MBTI人格測試") print("--------------------請回答以下的題目--------------------") import os I,E,N,S,T,F,J,P=0,0,0,0,0,0,0,0 while True: print("\n1.在生活上,你比較相信自己的_____") print("1==直覺") print("2==經驗") q1 = int(input('請輸入1或者2:')) if q1 == 1: N = N + 1 else: S = S + 1 print("\n2.看書或者看電影時,你對故事的鴃舌的想法通常是____") print("1==很投入某個角色的心情,跟著他上下起伏") print("2==他們跟我在不同世界,比較在乎劇情邏輯") q2 = int(input('請輸入1或者2:')) if q2 == 1: F = F + 1 else: T = T + 1 print("\n3.坐在大廳等待 check in,你會從哪裡開始觀察這間飯店?") print("1==看周圍其他旅客,並猜測飯店的客群") print("2==看擺設,例如花、吊燈、地毯、藝術品") print("3==看屁股下這張椅子的材質、顏色與造型") print("4==看電梯、餐廳、廁所在哪,掌握空間配置") q3 = int(input('請輸入1,2,3或者4:')) if q3 == 1 or q3 == 4: N = N + 1 elif q3 == 2 or q3 == 3: S = S + 1 print("\n4.哪個敘述比較接近你的穿衣哲學?") print("1==注重飾品、顏色與整體搭配") print("2==依照每天心情決定要穿什麼") print("3==不想動腦,同款的衣服好幾件") print("4==衣服長怎樣不重要,乾淨就好") q4 = int(input('請輸入1,2,3或者4:')) if q4 == 1 or q4 == 2: S = S + 1 elif q4 == 3 or q4 == 4: N = N + 1 print("\n5.到新環境的第一天,你會...") print("1==默默做自己的事情,不太好意思跟人講話") print("2==主動找人搭話,很快開始認識新朋友") q5 = int(input('請輸入1或者2:')) if q5 == 1: I = I + 1 else: E = E + 1 print("\n6.跟朋友一起出去玩,你通常...") print("1==完全跟上所有活動,全程樂在其中") print("2==到了某個時間點,會突然開始放空") q6 = int(input('請輸入1或者2:')) if q6 == 1: E = E + 1 else: I = I + 1 print("\n7.到大賣場進行例行採購,你傾向...") print("1==直接朝預設目標前進,速戰速決") print("2==還是會從頭開始閒逛,東看西看") q7 = int(input('請輸入1或者2:')) if q7 == 1: J = J + 1 else: P = P + 1 print("\n8.你覺得跟哪種人相處比較自在?") print("1==有點善變,但處處替人著想的人") print("2==不近人情,但做事公平公正的人") q8 = int(input('請輸入1或者2:')) if q8 == 1: F = F + 1 else: T = T + 1 print("\n9.工作上發生很煩人的事,你會傾向怎麼處理?") print("1==自己找個地方靜一靜,把情緒消化掉就沒事了") print("2==立刻找朋友大聊特聊,把情緒發洩掉就沒事了") q9 = int(input('請輸入1或者2:')) if q9 == 1: I = I + 1 else: E = E + 1 print("\n10.哪一個是你比較理想的生活節奏?") print("1==把工作與休息完全切開,休息時完全關機") print("2==想工作就工作、想休息就休息,隨心所欲") q10 = int(input('請輸入1或者2:')) if q10 == 1: J = J + 1 else: P = P + 1 print("\n11.抬頭看向天空,有兩隻鳥飛過一片雲朵中間,這時你會想...") print("1==哇,這個畫面真美,心情好好") print("2==那兩隻是什麼鳥啊?") print("3==喔,天色已經這麼晚了!") print("4==真想像牠們一樣自由自在") q11 = int(input('請輸入1,2,3或者4:')) if q11 == 1 or q11 == 4: F = F + 1 elif q11 == 2 or q11 == 3: T = T + 1 print("\n12.你對於「自律的人,才能擁有自由」這句話的想法比較接近...") print("1==認同並努力執行") print("2==光聽就壓力山大") q12 = int(input('請輸入1或者2:')) if q12 == 1: J = J + 1 else: P = P + 1 os.system('cls') if I>E: if S>N: if T>F: if J>P: istj() print("\n\nMBTI: ISTJ") print("\n物流師") print("實際且注重事實的個人,可靠性不容懷疑") print("形狀: 八邊形") print("人格類別: 守護者") print("代表人物: 娜塔莉·波曼、史恩·康納萊、喬治·華盛頓") else: #P>J istp() print("\n\nMBTI: ISTP") print("\n鑑賞家") print("大膽而實際的實驗家,擅長使用任何形式的工具") print("形狀: 四角星星") print("人格類別: 探險家") print("代表人物: 賈伯斯、達賴喇嘛、艾希頓·庫奇") else: #F>T if J>P: isfj() print("\n\nMBTI: ISFJ") print("\n守衛者") print("非常專注而溫暖的守護者,時刻準備著保護愛著的人們") print("形狀: 無形") print("人格類別: 守護者") print("代表人物: 尹淨漢、肯伊·威斯特、德蕾莎修女") else: #P>J isfp() print("\n\nMBTI: ISFP") print("\n探險家") print("靈活有魅力的藝術家,時刻準備著探索和體驗新鮮事物") print("形狀: 六角星星") print("人格類別: 探險家") print("代表人物: 賈伯斯、達賴喇嘛、艾希頓·庫奇") else: #N>S if T>F: if J>P: intj() print("\n\nMBTI: INTJ") print("\n建築師") print("富有想像力和戰略性的思想家,一切皆在計劃之中") print("形狀: 三角形") print("人格類別: 分析家") print("代表人物: 祖克伯、馬克思") else: #P>J intp() print("\n\nMBTI: INTP") print("\n邏輯學家") print("\n具有創造力的發明家,對知識有著止不住的渴望") print("形狀: 五邊形") print("人格類別: 分析家") print("代表人物: 愛因斯坦、林肯") else: #F>T if J>P: infj() print("\n\nMBTI: INFJ") print("\n提倡者") print("安靜而神秘,同時鼓舞人心且不知疲倦的理想主義者") print("形狀: Scutoid 盾片狀") print("人格類別: 外交家") print("代表人物: 全圓佑、李知勳、徐明浩") else: #P>J infp() print("\n\nMBTI: INFP") print("\n調停者") print("詩意,善良的利他主義者,總是熱情地為正當理由提供幫助") print("形狀: 九邊形") print("人格類別: 外交家") print("代表人物: 崔勝哲、文俊輝、全順榮、李碩珉") else: #E>I if S>N: if T>F: if J>P: estj() print("\n\nMBTI: ESTJ") print("\n總經理") print("出色的管理者,在管理事情或人的方面無與倫比") print("形狀: 正1000邊形") print("人格類別: 守護者") print("代表人物: 肯伊·威斯特、劍橋公爵夫人凱特、德蕾莎修女") else: #P>J estp() print("\n\nMBTI: ESTP") print("\n企業家") print("聰明,精力充沛善於感知的人們,真心享受生活在邊緣") print("形狀: 八角星星") print("人格類別: 探險家") print("代表人物: 安潔莉娜・裘莉、川普、凱文·史貝西") else: #F>T if J>P: esfj() print("\n\nMBTI: ESFJ") print("\n執政官") print("極有同情心,愛交往受歡迎的人們,總是熱心提供幫助") print("形狀: 六邊形") print("人格類別: 守護者") print("代表人物: 泰勒絲、比爾·柯林頓") else: #P>J esfp() print("\n\nMBTI: ESFP") print("\n表演者") print("自發的,精力充沛而熱情的表演者-生活在他們周圍永不無聊") print("形狀: 貓咪型") print("人格類別: 探險家") print("代表人物: 李奧納多·狄卡皮歐、麥莉·希拉") else: #N>S if T>F: if J>P: entj() print("\n\nMBTI: ENTJ") print("\n指揮官") print("大膽,富有想像力且意志強大的領導者,總能找到或創造解決方法") print("形狀: 正方形") print("人格類別: 分析家") print("代表人物: 希拉蕊、茱蒂法官") else: #P>J entp() print("\n\nMBTI: ENTP") print("\n辯論家") print("聰明好奇的思想者,不會放棄任何智力上的挑戰") print("形狀: 箏形\n") print("人格類別: 分析家") print("代表人物: 歐巴馬、富蘭克林、達文西") else: #F>T if J>P: enfj() print("\n\nMBTI: ENFJ") print("\n主角") print("富有魅力鼓舞人心的領導者,有使聽眾著迷的能力") print("形狀: 方圓形") print("人格類別: 外交家") print("代表人物: 洪知秀、金珉奎、李燦") else: #P>J enfp() print("\n\nMBTI: ENFP") print("\n競選者") print("熱情,有創造力愛社交的自由自在的人,總能找到理由微笑") print("形狀: 十二角星") print("人格類別: 外交家") print("代表人物: 夫勝寛、崔瀚率") x = int(input("\n\n是否繼續測驗(1:是 0:否):")) if x == 0: break os.system('cls')

程式碼解釋:

函式(Function)
def istj():
    print("IIIIIIIIII SSSSSSSSSS TTTTTTTTTT JJJJJJJJJJ")
    print("    II     SS             TT         JJ    ")
    print("    II     SS             TT         JJ    ")
    print("    II     SSSSSSSSSS     TT         JJ    ")
    print("    II             SS     TT         JJ    ")
    print("    II             SS     TT     JJ  JJ    ")
    print("IIIIIIIIII SSSSSSSSSS     TT     JJJJJJ    ")
  • 我利用了函式來設計了ASCII的圖案
  • 目的是為了讓輸出更好看更美觀
  • 以此類推,16種人格都使用了函式來設計ASCII圖案
迴圈(Loop)
while True:
  • 我使用了while迴圈來讓這個程式進入一個循環
  • True的部分是為了讓這個程式碼一直迴圈
變數(Variable)
I,E,N,S,T,F,J,P=0,0,0,0,0,0,0,0
  • 這些變數是為了收集4種維度8個面向
  • Extraversion (E)(外向)– Introversion (I)(內向)
  • Sensing (S) (感覺)– Intuition (N)(直覺)
  • Thinking (T)(思考)– Feeling (F)(情感)
  • Judging (J) (判斷)– Perceiving §(感知)
輸入(Input) && 問題(Question)
  • 一共有12個問題來收集那4個維度8個面向
  • 例如:
    print("\n1.在生活上,你比較相信自己的_____")
    print("1==直覺")
    print("2==經驗")
    q1 = int(input('請輸入1或者2:'))

    if q1 == 1:
        N = N + 1
    else:
        S = S + 1
  • q1的變數是指第一題的輸入變數
  • 玩家輸入的值是1或者2。這是為了更方便我們收集資料。
  • 當玩家輸入1時,變數N就會+1
  • 反之,輸入2就會讓變數S會+1
  • 以此類推,12題都是這種操作
  • 在程式碼的最後還有一個輸入是為了讓玩家輸入是否繼續輸入還是中斷
 x = int(input("\n\n是否繼續測驗(1:是 0:否):"))

    if x == 0:
        break
  • 這是為了讓下個玩家繼續輸入。不然就中斷結束。
選擇(Selection)
  • 在選擇這裡就比較複雜,可以屬於判斷。
if I>E:
        if S>N:
            if T>F:
                if J>P:
                    istj()
                    print("\n\nMBTI: ISTJ")
                    print("\n物流師")
                    print("實際且注重事實的個人,可靠性不容懷疑")
                    print("形狀: 八邊形")
                    print("人格類別: 守護者")
                    print("代表人物: 娜塔莉·波曼、史恩·康納萊、喬治·華盛頓")
                else: #P>J
                    istp()
                    print("\n\nMBTI: ISTP")
                    print("\n鑑賞家")
                    print("大膽而實際的實驗家,擅長使用任何形式的工具")
                    print("形狀: 四角星星")
                    print("人格類別: 探險家")
                    print("代表人物: 賈伯斯、達賴喇嘛、艾希頓·庫奇")
            else: #F>T
                if J>P:
                    isfj()
                    print("\n\nMBTI: ISFJ")
                    print("\n守衛者")
                    print("非常專注而溫暖的守護者,時刻準備著保護愛著的人們")
                    print("形狀: 無形")
                    print("人格類別: 守護者")
                    print("代表人物: 尹淨漢、肯伊·威斯特、德蕾莎修女")
                else: #P>J
                    isfp()
                    print("\n\nMBTI: ISFP")
                    print("\n探險家")
                    print("靈活有魅力的藝術家,時刻準備著探索和體驗新鮮事物")
                    print("形狀: 六角星星")
                    print("人格類別: 探險家")
                    print("代表人物: 賈伯斯、達賴喇嘛、艾希頓·庫奇")
        else: #N>S
            if T>F:
                if J>P:
                    intj()
                    print("\n\nMBTI: INTJ")
                    print("\n建築師")
                    print("富有想像力和戰略性的思想家,一切皆在計劃之中")
                    print("形狀: 三角形")
                    print("人格類別: 分析家")
                    print("代表人物: 祖克伯、馬克思")
                else: #P>J
                    intp()
                    print("\n\nMBTI: INTP")
                    print("\n邏輯學家")
                    print("\n具有創造力的發明家,對知識有著止不住的渴望")
                    print("形狀: 五邊形")
                    print("人格類別: 分析家")
                    print("代表人物: 愛因斯坦、林肯")
            else: #F>T
                if J>P:
                    infj()
                    print("\n\nMBTI: INFJ")
                    print("\n提倡者")
                    print("安靜而神秘,同時鼓舞人心且不知疲倦的理想主義者")
                    print("形狀: Scutoid 盾片狀")
                    print("人格類別: 外交家")
                    print("代表人物: 全圓佑、李知勳、徐明浩")
                else: #P>J
                    infp()
                    print("\n\nMBTI: INFP")
                    print("\n調停者")
                    print("詩意,善良的利他主義者,總是熱情地為正當理由提供幫助")
                    print("形狀: 九邊形")
                    print("人格類別: 外交家")
                    print("代表人物: 崔勝哲、文俊輝、全順榮、李碩珉")
    else: #E>I
        if S>N:
            if T>F:
                if J>P:
                    estj()
                    print("\n\nMBTI: ESTJ")
                    print("\n總經理")
                    print("出色的管理者,在管理事情或人的方面無與倫比")
                    print("形狀: 正1000邊形")
                    print("人格類別: 守護者")
                    print("代表人物: 肯伊·威斯特、劍橋公爵夫人凱特、德蕾莎修女")
                else: #P>J
                    estp()
                    print("\n\nMBTI: ESTP")
                    print("\n企業家")
                    print("聰明,精力充沛善於感知的人們,真心享受生活在邊緣")
                    print("形狀: 八角星星")
                    print("人格類別: 探險家")
                    print("代表人物: 安潔莉娜・裘莉、川普、凱文·史貝西")
            else: #F>T
                if J>P:
                    esfj()
                    print("\n\nMBTI: ESFJ")
                    print("\n執政官")
                    print("極有同情心,愛交往受歡迎的人們,總是熱心提供幫助")
                    print("形狀: 六邊形")
                    print("人格類別: 守護者")
                    print("代表人物: 泰勒絲、比爾·柯林頓")
                else: #P>J
                    esfp()
                    print("\n\nMBTI: ESFP")
                    print("\n表演者")
                    print("自發的,精力充沛而熱情的表演者-生活在他們周圍永不無聊")
                    print("形狀: 貓咪型")
                    print("人格類別: 探險家")
                    print("代表人物: 李奧納多·狄卡皮歐、麥莉·希拉")
        else: #N>S
            if T>F:
                if J>P:
                    entj()
                    print("\n\nMBTI: ENTJ")
                    print("\n指揮官")
                    print("大膽,富有想像力且意志強大的領導者,總能找到或創造解決方法")
                    print("形狀: 正方形")
                    print("人格類別: 分析家")
                    print("代表人物: 希拉蕊、茱蒂法官")
                else: #P>J
                    entp()
                    print("\n\nMBTI: ENTP")
                    print("\n辯論家")
                    print("聰明好奇的思想者,不會放棄任何智力上的挑戰")
                    print("形狀: 箏形\n")
                    print("人格類別: 分析家")
                    print("代表人物: 歐巴馬、富蘭克林、達文西")
            else: #F>T
                if J>P:
                    enfj()
                    print("\n\nMBTI: ENFJ")
                    print("\n主角")
                    print("富有魅力鼓舞人心的領導者,有使聽眾著迷的能力")
                    print("形狀: 方圓形")
                    print("人格類別: 外交家")
                    print("代表人物: 洪知秀、金珉奎、李燦")
                else: #P>J
                    enfp()
                    print("\n\nMBTI: ENFP")
                    print("\n競選者")
                    print("熱情,有創造力愛社交的自由自在的人,總能找到理由微笑")
                    print("形狀: 十二角星")
                    print("人格類別: 外交家")
                    print("代表人物: 夫勝寛、崔瀚率")
  • 以上的程式碼你可以想象成有4個框。
  • 最大的框是I或者E。
  • 第二個框是S或者N。
  • 第三個框是T或者F。
  • 最小的框是P或者J。
  • 經過收集到的數值計算,如果大框的I>E,就會進入I框。
  • 在I框裡,如果S>N,就會進入I框內的S框。
  • 在S框裡,如果T>F,就會進入I框內的S框內的T框。
  • 在T框裡,如果P>J,就會進入I框內的S框內的T框內的P框。
  • 最後出來的結果就是== ISTP
系統清除畫面(Clear)
import os

os.system('cls')
  • 這個是畫面刪除。
  • 目的是讓畫面看起來整齊感覺。
輸出(Output)
  • 一開始的畫面
  • 輸入的畫面
  • 結果的畫面
  • 結果底下還能讓下一位玩家測試,可以一直重複直到輸入0為止。