中国人对宝宝取名字一事非常重视,常会请风水先生出马,市面上也有一些自动取名软件,在淘宝上卖出了比较高的价格。同样的,网络小说或者游戏角色的设计当中也经常会遇到取名字的问题,其实中国的汉字也就几千个,取名的数量在2-4范围之内,所以中文名字其实是从一个有限集合中选取文字组合而成的,完全可以通过程序设计的方式从有限集中随机选择,我制作(也是用python哈哈)了三个.csv文件,分别存放常见的姓、男名、女名常用词(见附件),编写了以下代码,可以自动生成男名、女名、指定姓氏的男/女名。这样我们就可以完成以下任务:
1.批量给武侠小说男女侠客取名。
2.为给定定姓氏的男女宝宝取名。

我们需要以下前置知识:
1.随机函数库random中sample/randint函数的使用
2.with open读取csv文件的方法将其转成列表的方法
3.字符串.split/pop/join/*等方法的使用
4.if判断语句和for循环的使用

from random import sample,randint
#通过with open方法读取.csv文件中的姓名常用字
#常用字存储在boysnames、girlsnames、surnames三个列表中
with open('./boysnames.csv',encoding = 'utf-8') as f:boysnames = f.read()
boysnames = boysnames.split('\n')
boysnames.pop()with open('./girlsnames.csv',encoding = 'utf-8') as f:girlsnames = f.read()
girlsnames = girlsnames.split('\n')
girlsnames.pop()with open('./surnames.csv',encoding = 'utf-8') as f:surnames = f.read()
surnames = surnames.split('\n')
surnames.pop()#通过generate_name方法自动生成一个名字
#gender='boy'表示选择男名,gender='girl'表示选择女名
#可以通过surname来指定姓氏
def generate_name(gender='boy',surname=None):names = boysnamesif gender == 'girl':names == girlsnamesif surname == None:surname = sample(surnames,1)num = randint(1,2)name = sample(names,num)#以下代码表示有一定的概率生成形式为ABB的名字,其中使用sabb来表示生成abb这样名字的可能性大小,当然,sabb越大,可能性越小,这个可以通过简单的数学计算推导sabb = randint(0,100)if sabb > 70 and num == 1:name = name*2print(''.join(surname+name))print('随机创作十名女侠的名字:')
for i in range(10):generate_name('girl')
print('*'*10)
print('随机创作十名少侠的名字:')
for i in range(10):generate_name('boy')
print('*'*10)
print('随机创作十名何姓的男名:')
surname = ["何"]
for i in range(10):generate_name('boy',surname)
print('*'*10)
print('随机创作十名何姓的女名:')
surname = ["何"]
for i in range(10):generate_name('girl',surname)

最终,我们可以得到以下运行结果:


附件:姓氏、男名、女名常用词表下载链接
surnames.csv
girlsname.csv
boysname.csv

python版武侠小说男女侠姓名生成器相关推荐

  1. python版恶俗古风自动生成器.py

    python版恶俗古风自动生成器.py """ python版恶俗古风自动生成器.py 模仿自: http://www.jianshu.com/p/f893291674c ...

  2. Python项目实战:各种小说姓名生成器

    前言 大家都在看小说的把,小说有的名字温文尔雅,有的霸气侧漏,有的阴暗等你等,反正一个人的名字反应了这个是否活得久(在小说里面,是否是主角),下面为大家介绍利用Python来爬取姓名生成的网站,看看有 ...

  3. python计算gpa,Python版GPA计算器

    最近在网申投简历时遇到一个需要计算GPA的问题,想起自己在上学时写的Excel公式版GPA计算器略显low,而且操作也比较复杂,于是一时兴起,写了个Python版的,在此分享给大家! 准备工作: 用户 ...

  4. 栈应用之 括号匹配问题(Python 版)

    栈应用之 括号匹配问题(Python 版) 检查括号是否闭合 循序扫描被检查正文(一个字符)里的一个个字符 检查中跳过无关字符(所有非括号字符都与当前处理无关) 遇到开括号将其压入栈 遇到闭括号时弹出 ...

  5. 解析身份证号码(Python版)

    解析身份证号码(Python版) 简单分析 结构 六位数字地址码 八位数字出生日期码 三位数字顺序码 一位数字校验码 代码实现 获取身份证号里的信息 获取身份证中的省份 计算身份证校验位 验证并提取信 ...

  6. python版电报API接入从零到一(有彩蛋)

    文章链接 编号 分类 文章及链接 介绍 作者 来源分类 撰写日期 收录日期 F1 框架 python版telegram接入开源bot python-telegram-bot Github 2023-0 ...

  7. Python版名片管理系统源代码

    Python版名片管理系统,功能: 新增名片(记录用户的姓名,电话,QQ,邮箱): 显示所有名片: 查询名片: 查询成功后可以修改,删除名片 运行截图: cards_main.py :程序的入口,完整 ...

  8. 计算身体质量指数BMI(python版)

    计算BMI(Python版): class BMI: #定义BMI类def __init__(self,xm,nl,tz,sg): #初始化函数self.xm = xmself.nl = int(nl ...

  9. 面向对象编程(Python版详解)

    [辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...

  10. 函数式编程实战教程(Python版)

    许多函数式文章讲述的是组合.流水线和高阶函数这样的抽象函数式技术.本文不同,它展示了人们每天编写的命令式.非函数式代码示例,以及将这些示例转换为函数式风格. 文章的第一部分将一些短小的数据转换循环重写 ...

最新文章

  1. 内存泄漏排查攻略之:Show me your Memory
  2. 命题模式持续在变 你变不变
  3. 云计算之路-阿里云上:基于Xen的IO模型进一步分析“黑色0.1秒”问题
  4. Linux中$PATH详解
  5. 剑指offer 面试题64. 求1+2+…+n
  6. 数据结构之第一章一些概念
  7. Linux Socket 网络编程
  8. python强度公式计算_python – 黑体谱的普朗克斯公式
  9. win7原版镜像_(超详细)WIN7原版系统win镜像安装教程
  10. Android系统启动之BOOT_COMPLETED广播
  11. andriod 和风天气SDK获取实时天气(保姆级教程)
  12. 大前端学习笔记--持续随缘更新
  13. 工测中坐标方位角的计算c语言,工程测量中坐标方位角是怎么进行推算的?
  14. ROS小车实践记录(一)
  15. 乌云于 2014 年 02 月 17 日爆出支付宝登陆漏洞,该漏洞会对用户余额宝产生怎么样的影响或者是危害?
  16. 结对编程-四则运算-题目去重
  17. python transformat_Python transforms.Bbox方法代码示例
  18. strstr函数的原理原来是这样的
  19. 从零开始的DIY智能家居 - 基于 ESP32 的智能水浊度传感器
  20. centernet: objects as points

热门文章

  1. java自动机字符串匹配_【算法】利用有限自动机进行字符串匹配
  2. # 数学基础task 01 函数极限与连续性
  3. Android 桌面Widget (小组件)开发详解
  4. python爬虫遇到动态加密怎么办?爬取某点评网站内容
  5. MySQL根据输入的查询条件排序
  6. cocos2dx检测及预防外挂加速
  7. ASO秘籍:教你如何学会积分墙优化套路
  8. Spring之Bean后处理器——BeanPostProcessor的使用与源码解析
  9. 红包裂变被动吸粉引流方法,如何通过红包裂变的方式吸粉
  10. 欧式二元期权的定价公式及实现