前言
halo,包子们上午好
一个简单的中国亲戚关系计算器 python实现版本 每年的春节,都会有一些自己几乎没印象但父母就是很熟的亲戚,关系凌乱到你自己都说不清。 今年趁着春节在家没事情干,正好之前知道有中国亲戚关系计算器,想着自己实现一下,特此记录。
相关文件
关注小编,私信小编领取哟!
当然别忘了一件三连哟~~
源码点击蓝色字体领取
算法实现与介绍
由于本人能力有限,只完成了基本功能…
需求
计算亲戚关系链得出我应该怎么称呼的结果
数据定义
1、定义关系字符和修饰符
【关系】f:父,m:母,h:夫,w:妻,s:子,d:女,xb:兄弟,ob:兄,lb:弟,xs:姐妹,os:姐,ls:妹
【修饰符】 &o:年长,&l:年幼,#:隔断,[a|b]:并列
2、关系对应数据集合、关系过滤数据集合(data.json 和 filter.json)
原来参考的作者的关系过滤数据集合json有点问题,改了一下
filter 数据集的用途:比如 m,h 是我的妈妈的丈夫就是爸爸,也就是 f。 filter 的作用是去重和简化,需要把 exp 用
str 进行替换
算法实现
需要解决的情况基本有以下三种:
- 我的爸爸 = 爸爸,
- 我的哥哥的弟弟 = 自己/弟弟/哥哥,
- 我的哥哥的老公 = ?
分析
三种结果:1.单结果 2.多结果 3.错误提示 ,那么我们的算法要兼容以上三种情况 下面我们来一步步实现。
开发工具
Python版本:3.7.8
相关模块:
tkinter模块;
random模块;
threading模块;
以及一些python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
效果展示
代码展示
算法主要函数一:transformTitleToKey
该函数主要负责将文字转换成关系符号
源码+课件+学习解答加群:494958217
# 将文字转换成关系符号
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(