1.项目说明
银钱法是比较简便,效率也高的一种方法。
那我试着用python写点代码,模拟这个占卜的过程。
1.1银钱演算法介绍
银钱演算法的流程是这样的:
1.准备3枚硬币(一面为字,一面为花),并抛出。
2.观察硬币的向上面,并记录向上面为花的数量。
3.重复步骤1,2;共六次。
4.将做的记录转化为本卦和变卦。
5.对照易经卦辞作解。
转化的依据:
花的数量有0,1,2,3四种可能,分别对应少阴少阳老阴老阳四种情况。
当为老阴或老阳时,则称之为变爻。
2.代码部分
import random
import time
import pandas as pd
#银钱演算法 外汇名词解释http://www.fx61.com/definitions
def YQYSF():
a = random.randint(0,1)
b = random.randint(0,1)
c = random.randint(0,1)
global sum1
sum1 = a + b + c
return a,b,c
#本卦
def BenG(li):
yang = '________'
yin = '___ ___'
global xu1
xu1=[]
for _ in li:
if _ == 0:
print(yin)
xu1.append(1)
elif _ == 1:
print(yang)
xu1.append(0)
elif _ == 2:
print(yin + '*')
xu1.append(1)
elif _ == 3:
print(yang + '*')
xu1.append(0)
#变卦
def BianG(li):
yang = '________'
yin = '___ ___'
global xu2
xu2=[]
for _ in li:
if _ == 0 or _ == 3:
print(yin)
xu2.append(1)
else:
print(yang)
xu2.append(0)
#卦辞,文件是我自己收集的
def GuaCi(li):
guaci=pd.read_excel(r'E:\guaci.xlsx')
summ = ZH(li)
print(guaci[['卦名','卦相','卦解']][guaci['二进制序'] == summ])
1
2
3
4
5
#将银钱演算法占出的卦转化为二进制序
def ZH(li):
n = 0
summ = 0
for _ in li:
summ += _ * 2 ** n
n += 1
return summ
#主函数
def main():
input('您要占卜的问惑:')
print('请稍候,系统正在为您演算。')
sum11=[]
for i in range(1,7):
time.sleep(3)
print('第' + str(i) + '次的银钱演算结果是')
print(YQYSF())
sum11.append(sum1)
sum11.reverse()
print('本卦是:')
time.sleep(3)
BenG(sum11)
print('变卦是:')
time.sleep(3)
BianG(sum11)
print('您本次的问卦结果是:')
time.sleep(3)
print('本卦:')
GuaCi(xu1)
print('变卦:')
GuaCi(xu2)
print('仅供参考')
if __name__ == '__main__':
main()
|
|