Python实现一个简单的中国亲戚关系计算器,可能自己多少都有点混乱吧

Python日志

共 1148字,需浏览 3分钟

 · 2022-02-15

Python实现一个简单的中国亲戚关系计算器,可能自己多少都有点混乱吧


01
相关文件


大家可以关注小编的公众号哟~~

会不定时的更新一些好玩的资源的哟


02
导语


每年的春节,都会有一些自己几乎没印象但父母就是很熟的亲戚,关系凌乱到你自己都说不清。

今年趁着春节在家没事情干,正好之前知道有中国亲戚关系计算器,想着自己实现一下,特此记录。


03


算法实现与介绍



由于本人能力有限,只完成了基本功能....


需求


 计算亲戚关系链得出我应该怎么称呼的结果


数据定义



  1. 定义关系字符和修饰符


【关系】f:父,m:母,h:夫,w:妻,s:子,d:女,xb:兄弟,ob:兄,lb:弟,xs:姐妹,os:姐,ls:妹

【修饰符】 &o:年长,&l:年幼,#:隔断,[a|b]:并列


 2. 关系对应数据集合、关系过滤数据集合(data.json 和 filter.json)


filter 数据集的用途:比如 m,h 是我的妈妈的丈夫就是爸爸,也就是 f。filter 的作用是去重和简化,需要把 exp 用str 进行替换


04
算法实现



需要解决的情况基本有以下三种:


  • 我的爸爸 = 爸爸,

  • 我的哥哥的弟弟 = 自己/弟弟/哥哥,

  • 我的哥哥的老公 = ?



分析

三种结果:1.单结果 2.多结果 3.错误提示 ,那么我们的算法要兼容以上三种情况

下面我们来一步步实现。


05
算法主要函数一:transformTitleToKey



该函数主要负责将文字转换成关系符号


这里简化了原参考作者的写法,更 简单(不是) 符合计算器设定!


06
算法主要函数二:FilteHelper



该函数主要负责去重和简化


个人测试单结果,多结果都能实现,建议多结果实现参考输出和代码详细理解


07
 算法主要函数三:dataValueByKeys



该函数主要负责从数据源中查找对应 key 的结果


输出与效果


08
基本达到效果


一些细节与已知问题


  1.  首先,是性别:如果‘我’是女性,那么‘我的父亲的儿子’可以为[‘哥哥’,‘弟弟’],而不可以包含‘我’。(上述代码没实现)

  2. 另外,关于夫妻关系:在正常情况下,男性称谓只可以有‘妻子’,女性称谓只可以有‘丈夫’。(上述代码已实现)

  3.  第三,多种可能:‘我的父亲的儿子’ 可以是[‘我’,‘哥哥’,‘弟弟’],再若是再往后计算,如‘我的父亲的儿子的儿子’ ,需要同时考虑‘我的儿子’,‘哥哥的儿子’,‘弟弟的儿子’这三种可能。(上述代码已实现)已知问题:某些涉及自己的多重可能还存在莫名BUG









扫码关注 一键三连 

   






浏览 27
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报