<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擺攤算命

          共 6350字,需瀏覽 13分鐘

           ·

          2022-04-13 18:24

          0786705b9060ad4088db6ac4a44e57c8.webp


          文 | 酷頭

          來源:印象python「ID: python_logic」


          嗨!大家好,我是酷頭
          歡迎來到學(xué)習(xí)python的寶藏基地~~~
          11e2055c6b3e35717b837a47bdeac282.webp
          長按下方二維碼可以添加我為好友哦

          0ad81280d010235fa24fc513abe9a96c.webp


          ? 來源: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ā)。本人對于周易五行研究較淺,如有疏漏請見諒 最終效果如圖,在運(yùn)行程序之后,會(huì)根據(jù)當(dāng)前的運(yùn)勢自動(dòng)獲取你心中所想之事的卦象(本卦、互卦、變卦)

          870b86fa302eb3d50310178243765039.webp

          前置知識

          基礎(chǔ)原理

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

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

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

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

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

          5436fe3f780b4da5d04e4372e480763d.webp
          • 四象:當(dāng)我們將陰陽兩兩組合時(shí),就可以得到四種不同的組合,古人稱之為四象,注意,這里的四象同樣是哲學(xué)層面的狀態(tài),它可以是“青龍白虎朱雀玄武”,也可以是東南西北四個(gè)方位,在占卜的時(shí)候,我們通常會(huì)用“太陰”、“少陰”、“太陽”、“少陽”來稱呼這四象
          12a93383beade703f13e345d900292a0.webp
          • 八卦:當(dāng)給我們在四象中增加一爻,也就是三個(gè)陰陽組合在一起的時(shí)候,我們可以得到八個(gè)組合,古人認(rèn)為這八個(gè)組合可以代表自然界中的八類事物(八中狀態(tài)),即是為八卦
          60ec41116a45741b7f8948f906eabd73.webp

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

          a205c0c300faef7d04a513548de22859.webp

          目前,國內(nèi)的主流占卜基本都是通過不同的取數(shù)方式得到不同的別卦,最終判斷事情的走向。其實(shí)對于程序員來說,可以吧兩儀當(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ù)起卦

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

          開發(fā)

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

          1. 獲取一個(gè)隨機(jī)數(shù)(我們這里用當(dāng)前的時(shí)間戳)對8取模,當(dāng)做上掛(一個(gè)三位二進(jìn)制數(shù))
          2. 再獲取一個(gè)隨機(jī)數(shù),對八取模,當(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ù),對6取模,將上述六位二進(jìn)制數(shù)對應(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()

          源代碼

          源碼在公眾號印象python后臺(tái)回復(fù)占卜獲取~


          往期精彩回顧?Scrapy爬取B站666張小姐姐美照并存入Mysql和Excel答應(yīng)我以后不要再用print打印了,冰淇淋來了!讓人無法拒絕的pandas技巧,簡單卻好用到爆!實(shí)戰(zhàn)| 全國鴻星爾克門店分布圖,你的城市是最多的那個(gè)嗎?我用Python爬取了B站3948評論,圍觀最近超火的“殺瘋了!這就是國家隊(duì)的美貌嗎?”評論區(qū)



          850ac590ddd2372b312828368ab5c357.webp

          分享

          1c3a76cd57685ed60c536e03f4602482.webp

          收藏

          8f2d302ffb045d5c5b1551e18c7e7b22.webp

          點(diǎn)贊

          71b60fff440d556c7c755beb4d5d5b9f.webp

          在看

          瀏覽 79
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  黄网大全在线观看 | www.久久草 | 波多野结衣一区二区三区免费视频 | 影音先锋成人 | 免费的黄色录像 |