<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          我用Python擺攤算命

          共 6084字,需瀏覽 13分鐘

           ·

          2022-04-17 20:26


          ? 來源:blog.csdn.net/qq_35488769?type=blog

          背景

          一直以來,中式占卜都是基于算命先生手工實(shí)現(xiàn),程序繁瑣(往往需要沐浴、計(jì)算天時(shí)、靜心等等流程)。準(zhǔn)備工作復(fù)雜(通常需要銅錢等道具),計(jì)算方法復(fù)雜,需要純手工計(jì)算二進(jìn)制并轉(zhuǎn)換為最終的卦象,為了解決這個(gè)問題,筆者基于python實(shí)現(xiàn)了一套科學(xué)算命工具,用于快速進(jìn)行占卜。

          本文的算命方式采用八卦 + 周易+ 梅花易數(shù)實(shí)現(xiàn),腳本基于python3.9.0開發(fā)。本人對(duì)于周易五行研究較淺,如有疏漏請(qǐng)見諒 最終效果如圖,在運(yùn)行程序之后,會(huì)根據(jù)當(dāng)前的運(yùn)勢(shì)自動(dòng)獲取你心中所想之事的卦象(本卦、互卦、變卦)

          前置知識(shí)

          基礎(chǔ)原理

          首先我們需要了解一些最基本的占卜知識(shí),目前我國(guó)幾種比較主流的占卜方式基本都是基于易演化而來。總體而言都是根據(jù)某些現(xiàn)象,得到不同的卦象,而不同的卦象最終會(huì)代表所占卜事情的開端,發(fā)展和結(jié)果。

          太極生兩儀,兩儀生四象,四象生八卦

          這句話相信大家在很多影視作品中都聽說過,但很少有人知道它的真正含義,這句話其實(shí)概括了卦象產(chǎn)生的流程。

          • 太極:代表一個(gè)絕對(duì)混沌的狀態(tài),是一個(gè)哲學(xué)觀念,非要套用我們的客觀世界,可以理解為是大爆炸之前宇宙的狀態(tài),所有的物理法則都不生效,當(dāng)我們還未起卦時(shí)就處于這個(gè)狀態(tài)。

          • 兩儀:同樣是一個(gè)哲學(xué)觀念,代表一個(gè)事物的兩個(gè)對(duì)立狀態(tài),套用到客觀世界可以是“生-死”、“黑-白”、“清-濁”,在占卜的過程中,我們通常會(huì)有“陰-陽(yáng)”兩個(gè)狀態(tài),為了方便記錄,古人發(fā)明了兩個(gè)符號(hào)代表這兩個(gè)狀態(tài),在占卜的時(shí)候,一個(gè)這樣的狀態(tài)我們稱之為一爻(yao)

          • 四象:當(dāng)我們將陰陽(yáng)兩兩組合時(shí),就可以得到四種不同的組合,古人稱之為四象,注意,這里的四象同樣是哲學(xué)層面的狀態(tài),它可以是“青龍白虎朱雀玄武”,也可以是東南西北四個(gè)方位,在占卜的時(shí)候,我們通常會(huì)用“太陰”、“少陰”、“太陽(yáng)”、“少陽(yáng)”來稱呼這四象
          • 八卦:當(dāng)給我們?cè)谒南笾性黾右回常簿褪侨齻€(gè)陰陽(yáng)組合在一起的時(shí)候,我們可以得到八個(gè)組合,古人認(rèn)為這八個(gè)組合可以代表自然界中的八類事物(八中狀態(tài)),即是為八卦

          當(dāng)然,八個(gè)狀態(tài)用來代表事情的發(fā)展方向還是不夠用,于是古人又將八卦(單獨(dú)的八卦稱之為經(jīng)卦)兩兩組合,從而得到了64個(gè)不同的別卦,易經(jīng)中的六十四卦就是這么產(chǎn)生的

          目前,國(guó)內(nèi)的主流占卜基本都是通過不同的取數(shù)方式得到不同的別卦,最終判斷事情的走向。其實(shí)對(duì)于程序員來說,可以吧兩儀當(dāng)做一個(gè)一位二進(jìn)制數(shù),有0、1兩個(gè)狀態(tài)。四象就是兩位二進(jìn)制數(shù),有00,01,10,11四個(gè)狀態(tài)。八卦則是三位二進(jìn)制數(shù),有000,、001、010、011、100、101、110、111四個(gè)狀態(tài)

          如何產(chǎn)生卦象

          現(xiàn)在我們知道了卦象是如何演變的,但是我們還沒有能夠得到卦象的方式,其實(shí)在占卜的過程中,不同的占卜方式往往最大的區(qū)別就是起卦方式不同,我們這里采用梅花易數(shù)的方式起卦。

          梅花易數(shù)起卦法(這里只截取兩種起卦方式):

          1、年月日時(shí)起卦

          即以農(nóng)歷之年月日總和除以八,以余數(shù)為卦數(shù)求上卦;以年月日時(shí)總和除以八,以余數(shù)為卦數(shù)求下卦,再以年月日時(shí)總和除以六,以余數(shù)為動(dòng)爻。

          例:農(nóng)歷壬申年四月十一日巳時(shí)起卦:申年9數(shù),巳時(shí)6數(shù)。

          上卦為:(年+月+日)÷8,取余數(shù)。即:(9+4+11)÷8,此處無余數(shù)。

          下卦為:(年+月+日+時(shí))÷8,取余數(shù)。即:(9+4+11+6)÷8,余數(shù)為6為坎卦。

          動(dòng)爻數(shù)為:(年+月+日+時(shí))÷6,取余數(shù)。即:(9+4+11+6)除以6,此處無余數(shù)。

          此卦為:上卦為坤,下卦為坎,動(dòng)爻為上爻。

          2、直接以數(shù)起卦

          這是一種簡(jiǎn)便而準(zhǔn)確率極高的起卦方法。當(dāng)有人求測(cè)某事時(shí),可以讓來人隨意說出兩個(gè)數(shù),第一個(gè)數(shù)取為上卦,第二個(gè)數(shù)取為下卦,兩數(shù)之和除以6,余數(shù)為動(dòng)爻,或者可以隨便借用其他能得到兩數(shù)的辦法起卦,如翻書、日歷等等。

          開發(fā)

          我們將梅花易數(shù)的起卦方式流程用程序員的話總結(jié)一下,流程如下

          1. 獲取一個(gè)隨機(jī)數(shù)(我們這里用當(dāng)前的時(shí)間戳)對(duì)8取模,當(dāng)做上掛(一個(gè)三位二進(jìn)制數(shù))
          2. 再獲取一個(gè)隨機(jī)數(shù),對(duì)八取模,當(dāng)做下掛(一個(gè)三位二進(jìn)制數(shù))
          3. 將上述兩個(gè)隨機(jī)數(shù)進(jìn)行組合,得到一個(gè)六位二進(jìn)制數(shù)
          4. 六位二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)并查表,得到本卦
          5. 取一個(gè)隨機(jī)數(shù),對(duì)6取模,將上述六位二進(jìn)制數(shù)對(duì)應(yīng)位數(shù)的0變?yōu)?,1變?yōu)?,然后轉(zhuǎn)化為十進(jìn)制數(shù)并查表,得到變卦
          6. 根據(jù)本卦和變卦查表,得到占卜結(jié)果
          import?json
          import?random
          import?time

          #別掛配置數(shù)據(jù)
          gua_data_path?=?"data.json"

          #別卦數(shù)據(jù)
          gua_data_map?=?{
          ????????
          }
          fake_delay?=?10

          #讀取別卦數(shù)據(jù)
          def?init_gua_data(json_path):
          ?with?open(gua_data_path,'r',encoding='utf8')as?fp:
          ??global?gua_data_map
          ??gua_data_map?=?json.load(fp)
          #爻圖標(biāo)映射
          yao_icon_map?=?{
          ?0:"-?-",
          ?1:"---"
          }

          #經(jīng)卦名
          base_gua_name_map?=?{
          ?0:"坤",1:"震",2:"坎",3:"兌",4:"艮",5:"離",6:"巽",7:"乾"
          }

          #數(shù)字轉(zhuǎn)化為二進(jìn)制數(shù)組
          def?base_gua_to_yao(gua,?yao_length=3):
          ?result?=?[]
          ?while?gua?>=?1:
          ??level?=?0?if?gua?%?2?==?0?else?1
          ??gua?//=?2
          ??result.append(level)
          ?while?len(result)???result.append(0)
          ?return?result

          #二進(jìn)制數(shù)組轉(zhuǎn)化為數(shù)字
          def?base_yao_to_gua(array):
          ?array?=?array[:]
          ?while?len(array)?>?0?and?array[-1]?==?0:
          ??array.pop()
          ?result?=?0
          ?for?i?in?range(len(array)):
          ??if?array[i]?==?0:
          ???continue
          ??result?+=?pow(2,?i)
          ????????????????
          ?return?result

          #打印一個(gè)掛
          def?print_gua(gua):
          ?yao_list?=?base_gua_to_yao(gua,?6)
          ?up_yao_list?=?yao_list[0:3]
          ?up?=?base_yao_to_gua(up_yao_list)

          ?print(yao_icon_map[up_yao_list[2]])
          ?print(yao_icon_map[up_yao_list[1]]?+?"?"?+?base_gua_name_map[up])
          ?print(yao_icon_map[up_yao_list[0]])
          ????????
          ?print("")

          ?down_yao_list?=?yao_list[3:6]
          ?down?=?base_yao_to_gua(down_yao_list)
          ?print(yao_icon_map[down_yao_list[2]])
          ?print(yao_icon_map[down_yao_list[1]]?+?"?"?+?base_gua_name_map[down])
          ?print(yao_icon_map[down_yao_list[0]])

          #使用梅花易數(shù)
          def?calculate_with_plum_flower():
          ?#起上卦
          ?print("使用梅花易數(shù)??????????????????????????????????????????????????????????????????????????????????????????")
          ?print_a_wait_animation("卜上卦:",?fake_delay)
          ?up_base_gua?=?int(round(time.time()?*?1000))?%?8
          ?up_yao_array?=?base_gua_to_yao(up_base_gua)
          ?print("上卦獲取成功,上卦為:",?base_gua_name_map[up_base_gua])
          ?#起下卦
          ?print_a_wait_animation("正在獲取下卦:",?fake_delay)
          ?down_base_gua?=?random.randint(0,?999999999999)?%?8
          ?down_yao_array?=?base_gua_to_yao(down_base_gua)
          ?print("上卦獲取成功,下卦為:",?base_gua_name_map[down_base_gua])
          ?#組成卦象
          ?print_a_wait_animation("正在組成本卦:",?fake_delay)
          ?print("------------------------------------------------本卦------------------------------------------------")
          ?yao_list?=?up_yao_array?+?down_yao_array
          ?gua?=?base_yao_to_gua(yao_list)
          ?print_gua(gua)
          ?#讀取本卦象信息
          ?gua_code?=?str(base_gua_name_map[up_base_gua])?+?str(base_gua_name_map[down_base_gua])
          ?gua_data?=?gua_data_map[gua_code]
          ?print("本卦為:",?gua_data['name'])
          ?print("辭:",?gua_data['words'],"譯:",gua_data['white_words'])
          ?print("象:",?gua_data['picture'],"譯:",gua_data['white_picture'])
          ?print_a_wait_animation("正在組成互卦:",?fake_delay)
          ?print("------------------------------------------------互卦------------------------------------------------")
          ?#讀取互卦象信息
          ?up_hu_yao_list?=?[yao_list[4],yao_list[5],yao_list[0]]
          ?up_hu_gua?=?base_yao_to_gua(up_hu_yao_list)
          ?down_hu_yao_list?=[yao_list[5],yao_list[0],yao_list[1]]
          ?down_hu_gua?=?base_yao_to_gua(down_hu_yao_list)
          ?hu_yao_list?=?up_hu_yao_list?+?down_hu_yao_list
          ?hu_gua?=?base_yao_to_gua(hu_yao_list)
          ?hu_gua_code?=?str(base_gua_name_map[up_hu_gua])?+?str(base_gua_name_map[down_hu_gua])
          ?hu_gua_data?=?gua_data_map[hu_gua_code]
          ?print_gua(hu_gua)
          ?print("互卦為:",?hu_gua_data['name'])
          ?print("辭:",?hu_gua_data['words'],"譯:",hu_gua_data['white_words'])
          ?print("象:",?hu_gua_data['picture'],"譯:",hu_gua_data['white_picture'])
          ?print_a_wait_animation("正在組成變卦:",?fake_delay)
          ?print("------------------------------------------------變卦------------------------------------------------")
          ?change_index?=?int(round(time.time()?*?1000))?%?6
          ?change_yao_list?=?yao_list[:]
          ?change_yao_list[change_index]?=?0?if?change_yao_list[change_index]?==?1?else?1
          ?up_change_yao_list?=?change_yao_list[0:3]
          ?up_change_gua?=?base_yao_to_gua(up_change_yao_list)
          ?down_change_yao_list?=change_yao_list[3:5]
          ?down_change_gua?=?base_yao_to_gua(down_change_yao_list)
          ?
          ?change_gua?=?base_yao_to_gua(change_yao_list)
          ?print_gua(change_gua)
          ?change_gua_code?=?str(base_gua_name_map[up_change_gua])?+?str(base_gua_name_map[down_change_gua])
          ?change_gua_data?=?gua_data_map[change_gua_code]
          ?print("變卦為:",?change_gua_data['name'])
          ?print("辭:",?change_gua_data['words'],"譯:",change_gua_data['white_words'])
          ?print("象:",?change_gua_data['picture'],"譯:",change_gua_data['white_picture'])

          def?print_a_wait_animation(tips,times):
          ?animation?=?"|/-\\"
          ?idx?=?0
          ?for?i?in?range(times):
          ??print(tips?+?animation[idx?%?len(animation)],animation[idx?%?len(animation)],animation[idx?%?len(animation)],animation[idx?%?len(animation)],animation[idx?%?len(animation)],?end="\r"),
          ??idx?+=?1
          ??time.sleep(0.1)

          init_gua_data(gua_data_path)
          calculate_with_plum_flower()
          瀏覽 42
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品久久久久久久精 | 五月激情丁香 | 男人和女人操逼网站 | 操大奶妹 | 日韩三级欧美激情 |