python可执行文件 情人节快乐_各位情人节快乐, Python帮忙撒狗粮, 我连夜做了这个程序!(示例代码)...
阅读本文大概需要5分钟
码农的情人节
一年一度的情人节要来啦,这个浪漫温馨的节日,走在大街小巷,走在地铁里,走在商场里,走在电影院,姑娘们手里几乎都捧着一束花,心里都是乐滋滋的,一脸幸福的样子,忽然想起来很多年前我第一次送花的时候,好吧一晃都十几年过去了,在这么一个特别的日子,我也凑个热闹,也来参与一下这个情人节,于是我写一个Python相亲择偶的小程序,算是码农特有的方式过情人节吧~~
码农这个群体,高学历,高工资,高智商,但是不善于交流,圈子也很小,相信很多小伙伴或者周围的小伙伴,都有相亲的经历,或者被父母逼去相亲的经历,一般都是问年龄,你要找什么样的,有的还特讲究生肖匹配,记得网上有一个段子,说男的20-60岁都只喜欢一种类型的女孩,而20岁到60岁的女孩相亲需求却不断的变化,好我们的小程序就实现这样的功能
功能:
你输入你的性别,年龄,生日,我程序就给匹配一下你喜欢的类型,下面我们具体来讲讲怎么用Python写
第一部分:用户输入部分
1.获取用户的输入:我们用raw_input()
args =raw_input(‘Please input your info:sex[man,woman],age[20..60],birthday[month-day]\n‘)
我们希望用户输入3个参数,男或者女,年龄在20-60岁之间,生日,这个有3个问题需要解决
1).检查用户的输入,首先是长度
len(args.split())判断一下是不是3个参数
2).若长度对了,检查第一个参数是man还是woman
sexs = [‘man‘, ‘woman‘]
args.split()[0] not in sexs:
3).若第一个参数也对了,检查第二个参数
int(args.split()[1]) < 20 or int(args.split()[1]) > 60
也可以用int(args.split()[1]) not in range(20,61)
有一个要注意,因为输入的都是字符串,所以比如输入的20,其实是字符串‘20‘,必须要强制转换成20才能进行比较,而且range值接受integer
4).若第二个参数读对了,检查第三个参数也就是日期
其实的合法性检查需要用datetime.datetime.strptime()若成功就返回True,否则会报错,然后我们用try/except来捕捉,若捕到了就返回False.
我这边还是很温柔的用if/elif/else这样的判断,当然你也可以暴力的用raise TypeError这样抛出一些错误.
第二部分:生日和星座的映射
2.我们让用户输入的是性别,年龄和生日,我们需要把生日转换成星座,然后才好进一步调用
1).生日和星座的mapping这个很简单,构造2个表格
constellation_name_list = [u‘摩羯座‘,u‘水瓶座‘,u‘双鱼座‘,u‘白羊座‘,
u‘金牛座‘,u‘双子座‘,u‘巨蟹座‘,u‘狮子座‘,
u‘处女座‘,u‘天秤座‘,u‘天蝎座‘,u‘射手座‘]
constellation_date_range = [(1,20),(2,19),(3,21),(4,21),
(5,21),(6,22),(7,23),(8,23),
(9,23),(10,23),(11,22),(12,22)]
2),判断生日落在哪个区间
这个解法有很多种,有一种比较讨巧的解法,是用python自带的列表比较,比如(2,1)
res=filter(lambdaeach_constellation: each_constellation <= (month,day),constellation_date_range)
会返回一个过滤的序列,比如输入的生日在3.10,那么(3,10)比(3,21)小,这样就过滤得到一个列表是[(1,20),(2,19)],取其长度为2,然后把2作为星座列表index,取constellation_name_list[2]就可以了
return constellation_name_list[len(res) %12]
有一点要注意的是星座的列表长度是12,但是下标最大是[11]
第三部分:男女择偶样本
3.我这边用一个简单的网络段子构造样本,都说男的从20到60岁都一直喜欢一种类型的就是"年轻漂亮的",而女孩喜欢的对象,随着自己年龄和阅读的增长,需求是不断的变的
25岁左右的女孩喜欢=>高大,帅气的
30岁左右的女孩喜欢=>事业有成,潇洒多金
35岁左右的女性喜欢=>成熟稳重,有责任感
40岁左右的女性喜欢=>性格温和,有共同的生活目标
50岁左右的女性喜欢=>身体健康,会照顾家庭的
60岁左右的女性喜欢=>有相同话题的,说的来的
25岁左右的男孩喜欢=>年轻漂亮的
30岁左右的男人喜欢=>年轻漂亮的
35岁左右的男人喜欢=>年轻漂亮的
40岁左右的男人喜欢=>年轻漂亮的
50岁左右的男性喜欢=>年轻漂亮的
60岁左右的男性喜欢=>年轻漂亮的
果然男的很专业~~哈哈
1).我们构造2个函数
一个处理男的择偶需求,一个处理女的择偶需求,程序就是算法+数据结构,我们这边的数据结构用字典,列表都可以,我这边用一个列表构造一下
woman_choice_25 = [u‘帅气‘,u‘个子高‘]
woman_choice_30 = [u‘有钱‘,u‘事业有成‘]
woman_choice_35 = [u‘稳重‘,u‘有责任心‘]
woman_choice_40 = [u‘对我好‘,u‘有共同的生活目标‘]
woman_choice_50 = [u‘身体健康‘,u‘顾家‘]
woman_choice_60 = [u‘有共同语言‘]
woman_chocies = [woman_choice_25,woman_choice_30,woman_choice_35,
woman_choice_40,woman_choice_50,woman_choice_60]
woman_ages = [25,30,35,40,50,60]
2).逻辑部分
入口肯定是自己的年龄了,内部逻辑很简单,一个age判断就可以了
但是这样有点麻烦,我用了一个filter函数,把age的判断封装到filter里面去,看上去会简单一点filter(lambda age: age < your_age, woman_ages)
第四部分: 男女星座的匹配
4.星座的匹配网上有成熟的mapping关系,我们直接写死在一个字典里面,当然是字典套字典的
constellation_mapping_dict = {u‘白羊座‘: [u‘狮子座‘,u‘白羊座‘,u‘金牛座‘],
u‘金牛座‘: [u‘处女座‘,u‘摩羯座‘,u‘巨蟹座‘],
u‘双子座‘: [u‘水瓶座‘,u‘射手座‘,u‘天秤座‘],
u‘巨蟹座‘: [u‘双鱼座‘,u‘天蝎座‘,u‘摩羯座‘],
u‘狮子座‘: [u‘射手座‘,u‘白羊座‘,u‘水瓶座‘],
u‘处女座‘: [u‘摩羯座‘,u‘金牛座‘,u‘双鱼座‘],
u‘天秤座‘: [u‘双子座‘,u‘水瓶座‘,u‘狮子座‘],
u‘天蝎座‘: [u‘双鱼座‘,u‘处女座‘,u‘射手座‘],
u‘射手座‘: [u‘白羊座‘,u‘狮子座‘,u‘双子座‘],
u‘摩羯座‘: [u‘金牛座‘,u‘处女座‘,u‘双鱼座‘],
u‘水瓶座‘: [u‘天秤座‘,u‘双子座‘,u‘狮子座‘],
u‘双鱼座‘: [u‘天蝎座‘,u‘巨蟹座‘,u‘摩羯座‘]}
我们只要输入一个星座,然后查这个表就可以得到匹配的星座
第五部分:程序的交互输出(中英文版)
5.一般程序的输出不外乎,终端打印,文件输出,GUI,网页
1).我们这个是小程序,就简单的用打印输出吧
2).为了让用户体检好一些,我用中英文两个版本
大家要注意输出中文的时候,一定要用下面两行
reload(sys)
sys.setdefaultencoding(‘utf-8‘)
3).用户交互
我这边用了一个while来hold住死循环,里面不断的打印输出结果,然后提示一些信息,用户根据提示,输入相应的信息,若是q就退出
好最后看一下结果:
总结:
其实这个程序比较简单了,但是这个话题其实很有趣,真正要调查研究挖掘一下的话,需要用爬虫去婚恋网爬几千几万个样本数据,然后数据清洗之后,存到数据库里面,再把这些数据抽取特征值,用一些数据挖掘,机器学习的算法进行分析,然后画出一些直观的柱状图,圆饼图,这样才过瘾~~哈哈,放心后面我们会实例讲数据分析的
python可执行文件 情人节快乐_各位情人节快乐, Python帮忙撒狗粮, 我连夜做了这个程序!(示例代码)...相关推荐
- python网页编程测试_李亚涛:python编写友情链接检测工具
原标题:李亚涛:python编写友情链接检测工具 友情链接是网站外链的非常重要的来源,作为一个网站运营推广人员,需要定期对网站的友链进行更新与检查,如果有人下掉你的链接,这样你可以及时的检测并清除掉. ...
- python怎么打日志_怎样调试 日志 python 代码
展开全部 使用 pdb 进行调试 pdb 是 python 自带e5a48de588b662616964757a686964616f31333361306366的一个包,为 python 程序提供了一 ...
- c++中的引用和python中的引用_对比 C++ 和 Python,谈谈指针与引用
作者 | 樱雨楼 引言 指针(Pointer)是 C.C++ 以及 Java.Go 等语言的一个非常核心且重要的概念,而引用(Reference)是在指针的基础上构建出的一个同样重要的概念. 指针对于 ...
- python常用库教程_这几个python常用的库你必须知道!
随着人工智能时代的到来,python变得更加流行.受欢迎,功能强大.简单易学.容易入门.应用广泛等,掀起了学习热潮,现在越来越多人转行都会学习python语言.为了让大家快速掌握python,今天为大 ...
- python入门第一课_入门第一课 Python入门涉及的问题及简单示例
很多初学者都在问:我想自学Python,该怎样入门?入门选择哪些书籍? 下面,我以自己的理解作出解答. 1.先说明大体的学习进度. Python确实入门较为容易,语法清晰易懂.一旦入了门再想提高就和其 ...
- python国内书籍推荐_这些都是Python官方推荐的最好的书籍
转行学Python有前途吗?这个答案是肯定的,AI课程都已经进入小学教材了,未来Python趋势无疑是光明的,但是如何学习Python,很多Python小白都来问小编有什么适合的Python入门书籍推 ...
- python画日漫_不能错过的Python漫画
原标题:不能错过的Python漫画 漫画内容取自: http://kaltap.com/2015/11/28/9-python-cartoons/ 翻译: 诗书塞外 Python部落()组织翻译, 禁 ...
- 树莓派是python的应用领域吗_树莓派为什么采用python语言为主要开发语言?
回复内容: 他老爸想让更多小孩学会编程,去用电脑实现自己有趣的想法.本来打算只让这个机器跑Python(是只跑Python,像学习机一样的东西.并没有想过在上面弄一个完整的linux).但是后来动真格 ...
- 新手入门python的注意事项_【新手入门Python语言的方法】
2018年编程语言榜,Python位居榜首,很多学员对这门表示有着强烈的兴趣. 中公优教育小编这次就来谈谈Python入门方法. 下面直接进入今天的主题: 学编程,python算是一个不错的选择.因为 ...
- python span.string函数_【转】python f-string
主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法.与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今天 ...
最新文章
- 如何判断Java中两个Class对象是否相同
- SQL Server FOR XML PATH 语句的应用
- 学术英语:关于such as, for example, etc., and so on, i.e., 和e.g.的使用
- KMP算法的浅显解释
- 读写锁原理 java_java多线程-读写锁原理
- 【每日算法Day 99】你们可能不知道只用20万赢到578万是什么概念
- Kinetics-600数据集介绍
- 关于eclipse编译出错,缺失tools.jar 1.8
- 基于tensorflow的RBF神经网络案例
- 创业反鸡汤--3.谈待遇
- deeptools | bam to BigWig, 并使用IGV可视化峰图差异
- 刚刚开始学AT89S52单片机遇到的一些小问题 + 个人解决办法
- 刺激战场国际服服务器如何修改,刺激战场国际服如何更改自己的苹果id地区-无需购买海外id...
- Softmax回归及损失函数(李沐深度学习课程、自用)
- 【R】【课程笔记】02+03 基于R软件的计算
- Android集成微信支付SDK,实现支付功能
- stm8l+sx1278: 1278发送完成中断TxDone处理
- 融汇贯通实用的socket属性典型讲解
- 2022中国健博会/北京健康产业展/北京艾灸与艾制品展览会
- 信息泄露防护案例分享