A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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()

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马