相关文件
对了大家可以关注小编的公众号哟~~
公众号 Python日志
会不定时的更新一些好玩的资源的哟
导语
每年的春节,都会有一些自己几乎没印象但父母就是很熟的亲戚,关系凌乱到你自己都说不清。
今年趁着春节在家没事情干,正好之前知道有中国亲戚关系计算器,想着自己实现一下,特此记录。
算法实现与介绍
由于本人能力有限,只完成了基本功能…
需求
- 计算亲戚关系链得出我应该怎么称呼的结果
数据定义
-
定义关系字符和修饰符
【关系】f:父,m:母,h:夫,w:妻,s:子,d:女,xb:兄弟,ob:兄,lb:弟,xs:姐妹,os:姐,ls:妹
【修饰符】 &o:年长,&l:年幼,#:隔断,[a|b]:并列 -
关系对应数据集合、关系过滤数据集合(data.json 和 filter.json)
filter 数据集的用途:比如 m,h 是我的妈妈的丈夫就是爸爸,也就是 f。 filter 的作用是去重和简化,需要把 exp 用str 进行替换
算法实现
需要解决的情况基本有以下三种:
- 我的爸爸 = 爸爸,
- 我的哥哥的弟弟 = 自己/弟弟/哥哥,
- 我的哥哥的老公 = ?
分析
三种结果:1.单结果 2.多结果 3.错误提示 ,那么我们的算法要兼容以上三种情况
下面我们来一步步实现。
算法主要函数一:transformTitleToKey
该函数主要负责将文字转换成关系符号
# 将文字转换成关系符号
def transformTitleToKey(text):
result = text.replace("的", ",").replace("我", "").replace("爸爸", "f").replace("父亲", "f").replace("妈妈","m").replace("母亲", "m").replace("爷爷","f,f").replace("奶奶", "f,m").replace("外公", "m,f").replace("姥爷", "m,f").replace("外婆", "m,m").replace("姥姥", "m,m").replace("老公","h").replace("丈夫", "h").replace("老婆", "w").replace("妻子", "h").replace("儿子", "s").replace("女儿&#