LoginSignup
0
3

More than 1 year has passed since last update.

Pythonで姓名判断を作って占ってみた話

Posted at

姓名判断を作ってみました

この姓名判断で使ったモジュール
pandas

コード

多少長くて汚いです、すみません

本コード
import pandas

imi = [
    '',
    '飛躍を表す根源数',
    '物質面や精神面が不安定',
    '感性で才能が開花',
    '努力が報われない',
    '行動力で信頼を得る',
    '大業を成せる',
    '目標を掲げ幸福に',
    '努力で成果を得る',
    '感情の浮沈で急変',
    '精神面が不安定',
    '堅実で人生が安定',
    '積極性や決断に欠ける',
    'あふれる魅力で成功',
    '不平不満が多い',
    '幸運を呼び込み安泰',
    '富と名声を得る',
    '一途な信念で目標達成',
    '努力と積極性で勝利',
    '流されやすく急変',
    '誘惑に弱く急変',
    '精神力で飛躍',
    '何事も中途挫折',
    '順調に躍進',
    '人気運と金運を持つ',
    '意志が頑固な実力派',
    '言動のムラが仇となる',
    '頑固さが孤立を呼ぶ',
    '融通がきかない',
    '芸術分野で才能を発揮',
    '独善的な態度が仇となる',
    '努力が着実に実を結ぶ',
    '富と名声を築く',
    '行動力のある野心家',
    '流されやすく急変',
    '温厚さと実力で幸福に',
    '志持つが中途挫折',
    '末広がりに努力が実る',
    '芸術方面で才能を発揮',
    '逆境を乗り越え躍進',
    '虚栄心から急変',
    '運と実力で早くから飛躍',
    '人任せで急変',
    '内情の激しさが悪化させる',
    '急変しやすい',
    '広い分野で活躍',
    '人にだまされやすい',
    '交際範囲がカギ',
    '天賦の才能を生かせる',
    '善し悪しが交差する',
    '浮き沈みを繰り返す',
    '繊細でマイペース',
    '信頼が強く飛躍',
    '目標達成しにくい',
    '気苦労が絶えない',
    '強引さが仇となる',
    '精神面がもろい',
    '困難を乗り越える',
    '強い精神力で飛躍',
    '世間から遠ざかる',
    '情緒不安定',
    '努力が実を結ぶ',
    '努力むなしく空振り',
    '順風満帆な人生に',
    '金銭問題が出る',
    '財を築き繁栄',
    '四面楚歌の状態になる',
    '周囲からの支持を受ける',
    '思慮深く幸運を招く',
    '精神的に困窮',
    '怠惰が運気を落とす',
    'いばらの道を切り開く',
    '悩みが絶えない',
    '下積みは長いが幸福に',
    '困難がつきまとう',
    '堅実で幸福な人生に',
    '自暴自棄で中途挫折',
    '善し悪しの差がはっきり',
    '孤軍奮闘して成功',
    '理想の世界に入り込む',
    '気力を失ってしまう',
    '幸福を一身に集める'
]
kikkyou = {
    1:"大吉",
    2:"",
    3:"大吉",
    4:"",
    5:"大吉",
    6:"大吉",
    7:"",
    8:"",
    9:"",
    10:"",
    11:"大吉",
    12:"",
    13:"大吉",
    14:"",
    15:"大吉",
    16:"大吉",
    17:"",
    18:"",
    19:"",
    20:"",
    21:"大吉",
    22:"",
    23:"大吉",
    24:"大吉",
    25:"大吉",
    26:"",
    27:"吉凶混合",
    28:"",
    29:"大吉",
    30:"吉凶混合",
    31:"大吉",
    32:"大吉",
    33:"大吉",
    34:"",
    35:"",
    36:"吉凶混合",
    37:"大吉",
    38:"",
    39:"大吉",
    40:"吉凶混合",
    41:"大吉",
    42:"吉凶混合",
    43:"",
    44:"",
    45:"大吉",
    46:"",
    47:"大吉",
    48:"大吉",
    49:"",
    50:"",
    51:"吉凶混合",
    52:"大吉",
    53:"吉凶混合",
    54:"",
    55:"吉凶混合",
    56:"",
    57:"",
    58:"",
    59:"",
    60:"",
    61:"",
    62:"",
    63:"大吉",
    64:"",
    65:"大吉",
    66:"",
    67:"大吉",
    68:"大吉",
    69:"",
    70:"",
    71:"吉凶混合",
    72:"吉凶混合",
    73:"吉凶混合",
    74:"",
    75:"吉凶混合",
    76:"",
    77:"吉凶混合",
    78:"吉凶混合",
    79:"",
    80:"",
    81:"大吉"  
}

def check(myoji="山田", namae="太郎"):
    tenkaku = 0
    tenkaku_kekka = ""

    tikaku = 0
    tikaku_kekka = ""

    jinkaku = 0
    jinkaku_kekka = ""

    soukaku = 0
    soukaku_kekka = ""

    gaikaku = 0
    gaikaku_kekka = ""

    text = pandas.read_csv("http://ktu.iinaa.net/kanji-kakusu.csv",encoding="utf-8")
    kanji = text.loc[:, "kanji"]
    kakusu = text.loc[:, "kakusu"]

    
    #天格
    for a in range(len(myoji)):
        for i in range(len(kanji)):
            if myoji[a] == kanji[i]:
                tenkaku = tenkaku + kakusu[i]

    tenkaku_kekka = imi[int(tenkaku)]

    #地格
    for a in range(len(namae)):
        for i in range(len(kanji)):
            if namae[a] == kanji[i]:
                tikaku = tikaku + kakusu[i]
            

    tikaku_kekka = imi[int(tikaku)]
    
    #総画
    for a in range(len(myoji)):
        for i in range(len(kanji)):
            if myoji[a] == kanji[i]:
                soukaku = soukaku + kakusu[i]

    for a in range(len(namae)):
        for i in range(len(kanji)):
            if namae[a] == kanji[i]:
                soukaku = soukaku + kakusu[i]
                
    soukaku_kekka = imi[int(soukaku)]

    #人格
    for i in range(len(kanji)):
        if myoji[-1] == kanji[i]:
            jinkaku = jinkaku + kakusu[i]
            break

    for i in range(len(kanji)):
        if namae[0] == kanji[i]:
            jinkaku = jinkaku + kakusu[i]
            break

    jinkaku_kekka = imi[int(jinkaku)]

    #外格
    for i in range(len(kanji)):
        if myoji[0] == kanji[i]:
            gaikaku = gaikaku + kakusu[i]
            break
    for i in range(len(kanji)):
        if namae[-1] == kanji[i]:
            gaikaku = gaikaku + kakusu[i]
            break

    gaikaku_kekka = imi[int(gaikaku)]

    return f"""{myoji} {namae}さんの姓名判断占い結果〜

総画:{round(soukaku)}画、結果:「{soukaku_kekka}」、吉凶:「{kikkyou[soukaku]}」
        姓と名の画数を合計したもので全体運・生涯運で一生を通じた運を表す

地格:{round(tikaku)}画、結果:「{tikaku_kekka}」、吉凶:「{kikkyou[tikaku]}」
        名に当たる画数でその人の基本的な部分を表す

天格:{round(tenkaku)}画、結果:「{tenkaku_kekka}」、吉凶:「{kikkyou[tenkaku]}」
        姓にあたる部分で先祖から与えられた天運を表す

人格:{round(jinkaku)}画、結果:「{jinkaku_kekka}」、吉凶:「{kikkyou[jinkaku]}」
        姓の最後と名の頭文字の画数を足したものでその人の内面を表す
                
外格:{round(gaikaku)}画、結果:「{gaikaku_kekka}」、吉凶:「{kikkyou[gaikaku]}」
        総格から人格を引いたもので対人関係や対外的な要素を表す
        
※あくまでこれは、占いの結果に過ぎません※"""
    
        

x = check("","") #一番目が名字、二番目が名前

with open("占い/結果.txt", "w", encoding="utf-8")as file:
    file.write(x)

このコードでやってること

1 変数で、画数ごとの診断結果を定義する
2 僕が作った全常用漢字画数csvデータを読み込む
 ☆http://ktu.iinaa.net/kanji-kakusu.csv (utf-8)
   このcsvデータは自由に使って構いませんので、どんどんお使いください
3 総画・人格などのデータを画数csvデータを見ながらカウントしていく
4 1で定義した診断結果をもとに結果を集計する
5 テキストを整え、占いフォルダーないの結果.txtに保存する

試して見た結果

試しに、「五条 悟」の名前で結果を出させます。

診断結果
〜五条 悟さんの姓名判断占い結果〜

総画:21画、結果:「精神力で飛躍」、吉凶:「大吉」
        姓と名の画数を合計したもので全体運・生涯運で一生を通じた運を表す

地格:10画、結果:「精神面が不安定」、吉凶:「凶」
        名に当たる画数でその人の基本的な部分を表す

天格:11画、結果:「堅実で人生が安定」、吉凶:「大吉」
        姓にあたる部分で先祖から与えられた天運を表す

人格:17画、結果:「一途な信念で目標達成」、吉凶:「吉」
        姓の最後と名の頭文字の画数を足したものでその人の内面を表す
                
外格:14画、結果:「不平不満が多い」、吉凶:「凶」
        総格から人格を引いたもので対人関係や対外的な要素を表す
        
※あくまでこれは、占いの結果に過ぎません※

と、まぁこんな感じに出力されます。
なかなか当たっているんではないでしょうか?

まとめ

かなり当たっていて、良いと思います。
また、パワーアップできるところは、作り変えていこうかなと思います。
みなさんも、ぜひ使ってみてください!
ご視聴ありがとうございました!

0
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3