本文正在参加「Python主题月」,详情查看 活动链接
重复了
智的你一定会有疑问,上篇文章已经分享了用Python的faker库自动生成孩子姓名的方法,但是可能有的观众姥爷已经发现,上篇文章提供的方法生成的孩子姓名有重复的,这可就尴尬了,如果你想给你的三胞胎起名字,不幸三个名字重复了,这岂不是让人很蛋T。
接下来我们就解决这个问题!
让孩子的名字不重复
做法很简单,只需要修改两行代码即可
from faker import Faker
def generate_baby_name(sex,num,last_name):
fk = Faker('zh_CN')
for i in range(num):
if sex == '男':
name = '{}.{}{}'.format(i,last_name,fk.unique.first_name_male())
print(name)
elif sex == '女':
name = '{}.{}{}'.format(i,last_name,fk.unique.first_name_female())
print(name)
else:
info = '请检查您的输入!'
print(info)
while True:
sex = input('请输入孩子的性别(男/女):')
last_name = input('请输入孩子的姓:')
num = int(input('请输入取名个数:'))
generate_baby_name(sex=sex,last_name=last_name,num=num)
judge = input('继续请按回车键,结束请输入quit:')
if judge == 'quit':
break
复制代码
修改部分如下:
...
if sex == '男':
name = '{}.{}{}'.format(i,last_name,fk.unique.first_name_male())
print(name)
elif sex == '女':
name = '{}.{}{}'.format(i,last_name,fk.unique.first_name_female())
print(name)
...
复制代码
在生成名的方法first_name_male前加上unique修饰即可。
重新起名
运行修改后的代码,为你的孩子起20个名字:
C:\Users\Administrator\Desktop\document>D:/Python37/python.exe c:/Users/Administrator/Desktop/fak.py
请输入孩子的性别(男/女):男
请输入孩子的姓:苏
请输入取名个数:20
0.苏伟
1.苏飞
2.苏博
3.苏勇
4.苏佳
5.苏帅
6.苏旭
7.苏磊
8.苏想
9.苏鑫
10.苏凯
11.苏志强
12.苏杰
13.苏峰
14.苏坤
15.苏强
16.苏军
17.苏宁
18.苏岩
19.苏成
继续请按回车键,结束请输入quit:
复制代码
你会发现,现在的名字已经不重复了。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END